Skip to main content

Python Tutorial 9.6 - Meta-Programming & Metaclasses

Welcome to the “Meta-Programming & Metaclasses” tutorial!


Overview

Meta-programming lets you write code that manipulates code. Metaclasses define class behavior.

Introspection

class Sample:
    pass

print(dir(Sample))  
print(hasattr(Sample, '__init__'))

Dynamic Attribute Creation

class A: pass

a = A()
setattr(a, 'x', 100)
print(a.x)  # 100

Basic Metaclass

class Meta(type):
    def __new__(cls, name, bases, attrs):
        attrs['class_id'] = name.upper()
        return super().__new__(cls, name, bases, attrs)

class MyClass(metaclass=Meta):
    pass

print(MyClass.class_id)  # "MYCLASS"

Key Takeaways

  • Use type() or class decorators for simple dynamic classes.
  • Metaclasses (class X(metaclass=Meta)) customize class creation.
  • Powerful but use sparingly for clarity.

Happy coding!

Comments