__metaclass__为创建的类添加无效属性?

时间:2014-08-06 11:02:16

标签: python attributes metaclass

元类向类添加无效属性?

这是我的代码:

def __metaclass__(clsname, bases, dct):
    dct["key1"] = "value1"
    dct["invalid identifier"] = "value2"
    return type(clsname, bases, dct)


class Cls():
    pass



for name in dir(Cls):
    if not name.startswith("_"):
        print name

当我跑步时,我得到了:

>>> 
invalid identifier
key1
>>> 

是否可以访问invalid identifier

1 个答案:

答案 0 :(得分:2)

您仍然可以使用getattr()访问该标识符:

getattr(Cls, 'invalid identifier')

或直接在班级__dict__上映射:

Cls.__dict__['invalid identifier']

您无法使用直接属性访问,因为它确实不是有效的标识符。