KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I read What is a metaclass in Python? and I tried to replicate the upper metaclass from the example and found that this doesn't work in all cases: def upper(cls_name, cls_parents, cls_attr): """ Make all class attributes uppper case """ attrs = ((name, value) for name, value in cls_attr.items() if not name.startswith('__')) upper_atts = dict((name.upper(), value) for name, value in attrs) return type(cls_name, cls_parents, upper_atts) __metaclass__ = upper #Module level class Foo: bar = 1 f = Foo() print(f.BAR) #works in python2.6 The above fails (with an attribute error) in python3 which I think is natural because all classes in python3 already have object as their parent and metaclass resolution goes into the object class. The question: How do I make a module level metaclass in python3?
Tags (comma-separated)
Save Edits
Cancel