Sobes.tech
Back to questions
Junior — Middle
82

Объясните концепцию метакласса и его роль в определении классов в Python

Companies where asked
РостелекомРостелеком

Answer from AI

sobes.tech AI

Метакласс в Python — это класс, который создает другие классы. Проще говоря, класс — это объект, а метакласс — это "класс для классов".

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

Роль метакласса:

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

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

class Meta(type):
    def __new__(cls, name, bases, dct):
        dct['greet'] = lambda self: f"Hello from {name}!"
        return super().__new__(cls, name, bases, dct)

class MyClass(metaclass=Meta):
    pass

obj = MyClass()
print(obj.greet())  # Выведет: Hello from MyClass!

Здесь метакласс добавляет метод greet ко всем классам, которые его используют.