Skip to content

Latest commit

 

History

History
29 lines (18 loc) · 612 Bytes

metaclasses-in-python.md

File metadata and controls

29 lines (18 loc) · 612 Bytes

Let's add an intermediate layer to the class creation phase.

class Meta(type):
    pass


class Example(metaclass=Meta):
    attr = 1

    def method(self):
        return "method"


print(f"{Meta.__class__=}")       # <class 'type'>
print(f"{Example.__class__=}")    # <class '__main__.Meta'>
print(f"{Example().__class__=}")  # <class '__main__.Example'>


print(f"{Example().attr=}")        # 1
print(f"{Example().method()=}")    # 'method'


assert isinstance(Meta, type)
assert isinstance(Example, Meta)
assert isinstance(Example(), Example)