继承Python类方法?

时间:2016-05-26 16:56:33

标签: python inheritance static-methods

仍然没有承担Python继承,我觉得......感谢提示!

我想要一个子类的实例来执行超类的类方法。试过这个:

class SuperClass()
  @classmethod
  def aClassMethod(cls)
    pass

class SubClass(SuperClass)
  def aMethod(self)
    self.__class__.aClassMethod()

instance = SubClass()
instance.aMethod()

但Python告诉我" SubClass"没有属性" aClassMethod"。是的,当然,我知道,但是如何让超类的类方法可以被子类实例访问?

1 个答案:

答案 0 :(得分:1)

  

如何让超类的类方法可以被子类实例访问?

你不需要做任何特别的事情。超类的方法,包括它的类方法,都可用于子类。

考虑您的程序版本:

class SuperClass():
  @classmethod
  def aClassMethod(cls):
    print (cls.__name__)

class SubClass(SuperClass):
  def aMethod(self):
    # Just call the super class's class method as if it were
    # in your subclass:
    self.aClassMethod()


SubClass().aMethod()
SubClass().aClassMethod()
SubClass.aClassMethod()

SuperClass().aClassMethod()
SuperClass.aClassMethod()

正如您所看到的,类方法可以调用,就好像它是超类和子类的常规方法一样。此外,它可以使用类名自身调用,不需要实例。

结果:

SubClass
SubClass
SubClass
SuperClass
SuperClass