Sobes.tech
Junior — Middle

Жаңы класс аныктоо учурунда метакласс методторунун кайсыл чакыруулары болот?

sobes.tech AI

AIден жооп

Pythonда жаңы класс аныктоо учурунда, метакласс класс түзүү процесин көзөмөлдөйт. Метакласс методторуна негизги чакыруулар төмөнкү тартипте болот:

  1. __new__ — жаңы класс объектисин (өзү класс) түзүү үчүн чакырылат. Бул жерде класстын мүнөздөмөлөрүн өзгөртүүгө же даярдоого болот.

  2. __init__ — түзүлгөн класс объектисин баштайт, көбүнчө кошумча конфигурация үчүн колдонулат.

  3. __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__ методдору чакырылат.