Я нашел этот вопрос, когда искал использование метакласса в python. Это хороший вопрос с замечательным ответом, См. Здесь . Но пока я следовал примеру, подобному этому:
class UpperAttrMetaclass(type):
def __new__(cls, name, bases, dct):
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(object):
__metaclass__=UpperAttrMetaclass
bar = 'bip'
Тогда:
print(hasattr(Foo,'bar'))
Я надеялся, что он выдаст False
, но вместо этого True
Кажется, метакласс ничего не изменил.
Должно быть, я сделал ошибку. Рад, что вы можете указать мне на это!
EDIT:
Я использовал IDLE 3.2, чтобы прояснить ситуацию.
EDIT:
Спасибо за ответы