2016-11-17 2 views

ответ

4

Мы не должны говорить о наследовании, а о создании. Класс связан с его метаклассом так же, как экземпляр связан с его базовым классом. Класс - это экземпляр метакласса.

В частности, каждое поле, определенное на метаклассе, доступно из класса как «поле метакласса». Поэтому, если для нескольких классов используется один метакласс, тогда поля в метаклассе разделяются между этими классами.

Обратите внимание, что __init__ на метаклассе - это не то же самое, что и __init__ на классе. Они не связаны. Также __call__ становится новым «конструктором». Проверьте это:

>>> class Meta(type): 
...  def __call__(self): 
...   return 1 

>>> class Foo(metaclass=Meta): 
...  pass 

>>> Foo() 
1 
+0

так '' __init__' __del__' '__new__' являются определяют по умолчанию мета-класса' type' как его метаклассом поле. Я прав? –

+0

@RavinduShantha Да. – freakish

+0

@ причудливый Спасибо –

Смежные вопросы