Sobes.tech
Junior — Middle

Обяснете концепцията за метаклас и ролята й при определянето на класове в Python

sobes.tech AI

Отговор от AI

В Python метакласът е клас, който създава други класове. По-просто казано, класът е обект, а метакласът е "клас за класове".

По подразбиране всички класове в Python се създават с помощта на метакласа type. Метакласът определя как точно се създава класът, какви атрибути и методи ще има.

Ролята на метакласа:

  • Управление на процеса на създаване на клас (например, автоматично добавяне на методи или проверка на атрибути).
  • Позволява промяна на поведението на класовете по време на тяхното определяне.

Пример за използване на метаклас:

class Meta(type):
    def __new__(cls, name, bases, dct):
        dct['greet'] = lambda self: f"Здравей от {name}!"
        return super().__new__(cls, name, bases, dct)

class MyClass(metaclass=Meta):
    pass

obj = MyClass()
print(obj.greet())  # Ще изведе: Здравей от {name}!

Тук метакласът добавя метода greet към всички класове, които го използват.