1.7 KiB
1.7 KiB
La méthode prepare
Synthaxe
class.__prepare__()
La méthode class.__prepare__
:
- Cf. PEP-3115 - Metaclasses in Python 3000,
- Est utilisé comme namespace local pour tout le code du corps de la classe (prépare le contenu du dictionnaire dict de l'instance).
- Est appelée avant
class.__new__
, - Doit retourner un objet dictionary-like,
Exemples
class DummyMeta(type):
@classmethod
def __prepare__(mcs, name, bases, **kwargs):
print('DummyMeta.__prepare__')
return {'special': 1}
class Dummy(metaclass=DummyMeta):
def __new__(cls, name):
print(f'Dummy.__new__({name})')
return super().__new__(cls)
def __init__(self, name):
super().__init__()
self.name = name
print(f'Dummy.__init__({self.name})')
dummy1, dummy2 = (Dummy(f'dummy{i + 1}') for i in range(2))
print(f'{dummy1.special=}')
dummy1.special += 1
print(f'{dummy1.special=}')
print(f'{dummy2.special=}')
DummyMeta.__prepare__ Dummy.__new__(dummy1) Dummy.__init__(dummy1) Dummy.__new__(dummy2) Dummy.__init__(dummy2) dummy1.special=1 dummy1.special=2 dummy2.special=1