Junior — Middle
Ҳамлаҳои усулҳои метакласс дар равандии муайян кардани синфи нав чӣ гуна аст?
sobes.tech AI
Ҷавоб аз AI
Дар вақти муайян кардани синфи нав дар Python, метакласс раванди эҷоди синфро назорат мекунад. Зимни ин, асосӣ, даъватҳои методҳои метакласс дар тартиби зерин сурат мегиранд:
-
__new__— барои эҷоди объекти нав (яъне, худи синф) даъват мешавад. Ин ҷо метавонед хосиятҳои синфро пеш аз эҷод кардан тағир диҳед ё омода созед. -
__init__— объекти синфро оғоз мекунад, одатан барои танзимоти иловагӣ истифода мешавад. -
__call__— ҳангоми сохтани намунаҳои синфи нав даъват мешавад, аммо ин пас аз муайян кардани синф рӯй медиҳад.
Масалан, як метакласс осоншуда:
class Meta(type):
def __new__(cls, name, bases, dct):
print(f"Эҷоди синф {name}")
return super().__new__(cls, name, bases, dct)
def __init__(cls, name, bases, dct):
print(f"Оғоз кардани синф {name}")
super().__init__(name, bases, dct)
class MyClass(metaclass=Meta):
pass
Ҳангоми иҷро, чунин мебинем:
Эҷоди синф MyClass
Оғоз кардани синф MyClass
Инчунин, дар вақти муайян кардани синфҳои нав, методҳои __new__ ва __init__ метакласс даъват мешаванд.