Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Challenge: Enforcing Attribute Naming Conventions | Custom Metaclasses in Action
Python Metaclasses Demystified

bookChallenge: 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.

Opgave

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.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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?

close

bookChallenge: Enforcing Attribute Naming Conventions

Stryg for at vise menuen

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.

Opgave

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.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4
single

single

some-alt