Подтвердить что ты не робот

Можно ли наследовать python @classmethod?

Например, у меня есть базовый класс и производный класс:

>>> 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 без его перезаписи и вызова метода суперкласса? Я бы хотел перезаписать метод класса только тогда, когда это необходимо.

4b9b3361

Ответ 1

Да, они могут быть унаследованы.

Если вы хотите наследовать членов, вам нужно сообщить python о наследовании!

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

Хорошая практика сделать ваш класс Base унаследованным от объекта (но он будет работать, если вы этого не сделаете):

>>> class Base(object):
...     ...

Ответ 2

Вы должны определить базовый класс в подклассе:

class Derived(Base):
    ...