Питон - статьи
773123a3

Вызов метаметода


>
>
>
print M.mm(C) I am a metamethod of C >
>
>
print C.mm() I am a metamethod of C >
>
>
print c.mm() [...] AttributeError: 'C' object has no attribute 'mm' >
>
>
print C.cm() I am a classmethod of C >
>
>
print c.cm() I am a classmethod of C

Кроме того, метаметод извлекается dir(M), а не dir(C), в то время как метод класса извлекается dir(C) и dir(c).

Вы можете вызывать только методы метакласса, которые определены в порядке разрешения метода класса, выполнив диспетчеризацию по метаклассу (встроенные функции, как print, делают это неявно):





Содержание раздела