You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多继承实例调用方法后无法打印level属性更新值问题

问题说明

直接打印Python类的实例对象时,默认输出的是对象所属类、内存地址的默认标识字符串,不会自动输出实例的所有属性值,因此执行print(p)无法得到更新后的level属性值。
原运行代码如下:

class Freelencer:
    company="google"
    level=0
    def upgradelevel(self):
        self.level=self.level+1
    
class Employee:
    company="visa"
    ecode=120
    
class Programmer(Freelencer,Employee):
    name="rohit"
    
p=Programmer()
p.upgradelevel()
print(p)

上述代码默认运行输出格式类似<__main__.Programmer object at 0x000001F8A3D71D90>,不会展示level属性的具体值。

解决方案
  • 方案1:直接访问实例的level属性打印,将最后一行代码修改为print(p.level),运行后即可输出更新后的结果1,是最简单直接的实现方式。
  • 方案2:如果需要直接打印实例p时就输出自定义的属性信息,可以在类中定义__str__特殊方法,自定义实例转字符串的返回规则,修改后的示例代码如下:
class Freelencer:
    company="google"
    level=0
    def upgradelevel(self):
        self.level=self.level+1
    
class Employee:
    company="visa"
    ecode=120
    
class Programmer(Freelencer,Employee):
    name="rohit"
    def __str__(self):
        return f"name: {self.name}, level: {self.level}, company: {self.company}, ecode: {self.ecode}"
    
p=Programmer()
p.upgradelevel()
print(p)

运行修改后的代码,会直接输出拼接好的属性内容,其中level的值为调用方法后更新的1。

补充提示:当前代码的多继承属性查找顺序为Programmer→Freelencer→Employee,因此直接访问p.company会拿到父类Freelencer中定义的"google",如果需要获取Employee类的company属性,需要显式通过类名访问。

内容的提问来源于stack exchange,提问作者Sumit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:01:29