Рассмотрим этот пример:
class Meta(type):
def method(*_, **__):
print('Meta')
class A(object):
__metaclass__ = Meta
class B(object):
@classmethod
def method(*_, **__):
print('B')
class C(A, B):
pass
C.method() # prints 'B'
Здесь у нас есть класс A
, у которого есть метод method
, определенный в его метаклассе Meta
. И у нас есть класс B
, который также имеет метод method
, но определенный как метод класса.
Класс C
, который наследуется как от A
, так и от B
, в результате имеет method
от класса B
.
Но если бы A
определял method
как метод класса, C
унаследовал method
от A
.
Я хочу найти способ сделать возможным Meta.method
участие в наследовании, как если бы это был метод класса класса, который использует этот метакласс. Можно как-то?
C
также имеетMeta
в качестве своего метакласса, как и любой подклассA
. Должен лиC
вести себя так, как будто у него есть собственное определениеmethod
, как вы хотите, чтобыA
вел себя? - person user2357112 supports Monica   schedule 06.04.2016