Discuss / Python / 交作业

交作业

Topic source
print("-----------"*100)
class UpperAttrMetaclass(type):
    print("1============")
    def __new__(cls, name, bases, dct):
        print("2============")
        attrs = ((name, value) for name, value in dct.items() if not name.startswith('__'))
        uppercase_attr  = dict((name.upper(), value) for name, value in attrs)
        return type.__new__(cls, name, bases, uppercase_attr)

class Foo(metaclass=UpperAttrMetaclass):
    print("3============")
    bar = 'bip'

print("-"*1000)
print(hasattr(Foo, 'bar'))
# 输出: False
print(hasattr(Foo, 'BAR'))
print(dir(f))
控制台:
------------------------------------------------
1============
3============
2============
------------------------------------------------
False
True
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bar']

  • 1

Reply