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

时间:2018-11-27 01:48:21

标签: python python-3.x inheritance abstract-class

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

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

1 个答案:

答案 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