Python继承中如何修改子类类变量并复用父类功能?
Python子类复用父类方法并使用自身类变量的解决方案
你的问题出在父类方法里直接硬编码引用了Parent.my_global——不管子类怎么重定义这个类变量,方法都会固执地读取父类的值。要实现子类复用方法但用自己的类变量,不用改实例变量也不用重写方法,只需要修改方法里获取变量的方式。
修改后的代码如下:
class Parent(): my_global = "parent" def __init__(self): pass def printmg(self): # 通过self.__class__动态获取当前实例所属的类 print(self.__class__.my_global) class Child(Parent): my_global = "child" my_parent = Parent() my_parent.printmg() # 输出 parent my_child = Child() my_child.printmg() # 输出 child
为什么这样有效?
self.__class__会返回当前实例对应的类对象:当父类实例调用方法时,它指向Parent类;子类实例调用时,就指向Child类。这样方法就能自动读取对应类的my_global变量,完美满足你“复用方法+子类自定义类变量”的需求。
内容的提问来源于stack exchange,提问作者Santiago Cuellar
相关产品推荐
相关产品推荐

