Junior — Middle
Milyen metaklasz metódushívások történnek egy új osztály meghatározásakor?
sobes.tech MI
Válasz az MI-től
Amikor egy új osztályt definiálunk Pythonban, a metaklasz kontrollálja az osztály létrehozási folyamatát. A metaklasz módszereinek fő hívásai a következő sorrendben történnek:
-
__new__— meghívás az új osztályobjektum (azaz az osztály maga) létrehozására. Itt módosíthatja vagy előkészítheti az osztály attribútumait a létrehozás előtt. -
__init__— inicializálja a létrehozott osztályobjektumot, általában további konfigurációkra használják. -
__call__— meghívás az új osztály példányainak létrehozásakor, de ez már az osztály meghatározása után történik.
Egyszerűsített metaklasz példa:
class Meta(type):
def __new__(cls, name, bases, dct):
print(f"{name} osztály létrehozása")
return super().__new__(cls, name, bases, dct)
def __init__(cls, name, bases, dct):
print(f"{name} osztály inicializálása")
super().__init__(name, bases, dct)
class MyClass(metaclass=Meta):
pass
Futtatáskor a következő fog megjelenni:
MyClass osztály létrehozása
MyClass osztály inicializálása
Így, egy új osztály definiálásakor, a metaklasz __new__ és __init__ módszerei hívódnak meg.