继承的类是否有可能在不事先知道子类的情况下调用引用子类的父类抽象方法?
class AbsParent(object):
att = 'parent'
def my_meth():
return AbsParent.att
class AbsChild(AbsParent):
att = 'child'
print(AbsChild.my_meth())
显然,以上代码将始终返回parent
,因为父类正在通过AbsParenet.att
调用其自己的属性
子类是否可以通过继承使用父类方法但仍引用其自己的属性来打印child
的干净方法?我只能想到这样的恐怖
class AbsParent(object):
att = 'parent'
def my_meth(abs_class):
return abs_class.att
class AbsChild(AbsParent):
att = 'child'
print(AbsChild.my_meth(AbsChild))
答案 0 :(得分:2)
不清楚是否将my_meth
用作类方法。您正在使用课程AbsChild
进行通话,所以也许您想要以下内容:
class AbsParent(object):
att = 'parent'
@classmethod
def my_meth(cls):
return cls.att
class AbsChild(AbsParent):
att = 'child'
print(AbsChild.my_meth())
或者作为实例方法:
class AbsParent(object):
att = 'parent'
def my_meth(self):
return self.att
class AbsChild(AbsParent):
att = 'child'
c = AbsChild() # make instance
print(c.my_meth())
同时打印child