Sobes.tech
Junior — Middle

Wyjaśnij koncepcję metaklasy i jej rolę w definiowaniu klas w Pythonie

sobes.tech AI

Odpowiedź od AI

W Pythonie metaklasa to klasa, która tworzy inne klasy. Mówiąc prościej, klasa to obiekt, a metaklasa to "klasa dla klas".

Domyślnie, wszystkie klasy w Pythonie są tworzone za pomocą metaklasy type. Metaklasa określa, jak dokładnie tworzona jest klasa, jakie atrybuty i metody będzie miała.

Rola metaklasy:

  • Zarządzać procesem tworzenia klasy (np. automatycznie dodawać metody lub sprawdzać atrybuty).
  • Pozwalać na modyfikację zachowania klas na etapie ich definiowania.

Przykład użycia metaklasy:

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

class MyClass(metaclass=Meta):
    pass

obj = MyClass()
print(obj.greet())  # Wypisze: Cześć z {name}!

Tutaj metaklasa dodaje metodę greet do wszystkich klas, które jej używają.