gpt4 book ai didi

python - 具有抽象方法和属性的继承

转载 作者:行者123 更新时间:2023-12-01 01:24:20 27 4
gpt4 key购买 nike

继承类是否可以在事先不知道子类的情况下调用引用子类的父类抽象方法?

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))

最佳答案

目前还不清楚您是否希望 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())

两者都打印

关于python - 具有抽象方法和属性的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53491614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com