"""
将Foo中的所有小写的类属性变成大写的属性
"""
def upper_attr(class_name, class_parents, class_attr):
# 遍历属性字典,把不是__开头的属性名字变成大写
new_attr = {}
for name, value in class_attr.items():
new_attr[name.upper()] = value
# 调用type来创建一个类
return type(class_name, class_parents, new_attr)
class Foo(object, metaclass=upper_attr):
bar = "bip"
print(hasattr(Foo, "bar"))
print(hasattr(Foo, "BAE"))
f = Foo
print(f.BAR)
False
True
bip