我有以下课程:
class TestClass(object):
def __init__(self, **kwargs):
for key, value in kwargs.items(): #items return list of dict
setattr(self, key, value)
示例用途:
^{pr2}$如何在不知道属性名称的情况下迭代这个结构?Python为我们提供了内置方法__getattribute__
,但我仍然需要知道所请求属性的名称:
print(obj.__getattribute__("testkey1"))
__dict__
属性包含所需的内容。 课堂上有:任何实例都有:
^{pr2}$您应该通过} or ^{}? 。在
vars
内置函数访问此属性。 调用vars(foo)
将返回foo.__dict__
。 请参阅相关帖子:Use ^{Documentation for ^{} :
另外,我试着写了一个装饰师,你可能会感兴趣。 这是一个类装饰器,它向它装饰的类添加一个
initKwargs
。 此外,它还包装了该类的__init__
方法,以便将接收到的kwargs
字典附加到类的initKwargs
属性中。在演示:
我发现这种方法比使用
vars
要干净得多,因为您自己定义了要访问的内容。 它能让你更好地控制班级的行为。在相关问题 更多 >
编程相关推荐