例如,我有一个基类和一个派生类:
>>> class Base:
... @classmethod
... def myClassMethod(klass):
... pass
...
>>> class Derived:
... pass
...
>>> Base.myClassMethod()
>>> Derived.myClassMethod()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class Derived has no attribute 'myClassMethod'
是否有可能让Derived类能够调用myClassMethod而不会覆盖它并调用super的类方法?我只想在必要的时候覆盖类方法。
答案 0 :(得分:20)
是的,它们可以被遗传。
如果你想继承成员,你需要告诉python继承!
>>> class Derived(Base):
... pass
在Python 2中,让你的Base
类继承自object是一种很好的做法(但是如果没有你这样做,它会工作)。在Python 3中,它是不必要的,因为它默认已经从对象继承(除非你试图使你的代码向后兼容):
>>> class Base(object):
... ...
答案 1 :(得分:4)
您必须从子类中的基类派生:
class Derived(Base):
...