20

たとえば、基本クラスと派生クラスがあります。

>>> 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のクラスメソッドを呼び出さずに呼び出すことができるようにすることは可能ですか?必要な場合にのみクラスメソッドを上書きしたいのですが。

4

2 に答える 2

23

はい、継承できます。

メンバーを継承したい場合は、Pythonに継承について伝える必要があります!

>>> class Derived(Base):
...    pass

Python 2では、Baseクラスをオブジェクトから継承させることをお勧めします(ただし、そうしなくても機能します)。Python 3では、デフォルトでオブジェクトから既に継承されているため、不要です(コードに下位互換性を持たせようとしている場合を除く)。

>>> class Base(object):
...     ...
于 2012-06-07T16:49:08.183 に答える
5

サブクラスの基本クラスから派生する必要があります。

class Derived(Base):
    ...
于 2012-06-07T16:49:05.967 に答える