Challenge: Enforcing Attribute Naming Conventions
As you continue exploring Python metaclasses, recall that the class attribute dictionaryβattrs in the __new__ or __init__ method of a metaclassβcontains all attributes defined directly in the class body. Manipulating or inspecting this dictionary enables you to enforce rules or transform class attributes as needed. For example, you can iterate through attrs.items() to examine attribute names and values before the class is actually created. This capability is central to many metaclass-driven customizations, such as validation, transformation, or automatic documentation.
Swipe to start coding
Write a metaclass that enforces all class attribute names, except special methods (those surrounded by double underscores), are uppercase. If an attribute defined in the class body is not uppercase and does not start and end with double underscores, raise a ValueError. The error message should include both the attribute name and the class name.
Solution
Thanks for your feedback!
single
Ask AI
Ask AI
Ask anything or try one of the suggested questions to begin our chat
Can you give an example of how to use a metaclass to enforce attribute rules?
What are some common use cases for manipulating the class attribute dictionary in a metaclass?
How does modifying the attrs dictionary affect the resulting class?
Awesome!
Completion rate improved to 4.76
Challenge: Enforcing Attribute Naming Conventions
Swipe to show menu
As you continue exploring Python metaclasses, recall that the class attribute dictionaryβattrs in the __new__ or __init__ method of a metaclassβcontains all attributes defined directly in the class body. Manipulating or inspecting this dictionary enables you to enforce rules or transform class attributes as needed. For example, you can iterate through attrs.items() to examine attribute names and values before the class is actually created. This capability is central to many metaclass-driven customizations, such as validation, transformation, or automatic documentation.
Swipe to start coding
Write a metaclass that enforces all class attribute names, except special methods (those surrounded by double underscores), are uppercase. If an attribute defined in the class body is not uppercase and does not start and end with double underscores, raise a ValueError. The error message should include both the attribute name and the class name.
Solution
Thanks for your feedback!
single