仍然没有承担Python继承,我觉得......感谢提示!
我想要一个子类的实例来执行超类的类方法。试过这个:
class SuperClass()
@classmethod
def aClassMethod(cls)
pass
class SubClass(SuperClass)
def aMethod(self)
self.__class__.aClassMethod()
instance = SubClass()
instance.aMethod()
但Python告诉我" SubClass"没有属性" aClassMethod"。是的,当然,我知道,但是如何让超类的类方法可以被子类实例访问?
答案 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