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
Post a Comment