【发布时间】:2019-07-06 16:20:33
【问题描述】:
我正在尝试公开 classes 字典,使其既可下标,又能够遍历 dict 值。这是课程:
class ExampleClass():
def __init__(self, *args, **kwargs):
for key, value in self.kwargs.items():
setattr(self, key, value)
for arg in args:
setattr(self, arg, arg) if isinstance(arg, str) else setattr(self, str(arg), arg)
def __str__(self):
return 'This is the example class'
def __getitem__(self, obj):
return self.__dict__[obj]
def __len__(self):
return len(self.__dict__.items())
如果我们创建一个实例并传入这些值:
cls = ExampleClass(123456,'cash', name='newexample', id=1)
这会将所有 args 和 kwargs 存储为实例属性,并且使用语法 cls['id'] 将按预期返回 1。但是当我使用语法 for i in cls: print(i) 我得到一个 KeyError :KeyError : 0
如何使这个对象的 dict 既可下标又可迭代?
【问题讨论】:
-
需要实现
__iter__函数来开启可迭代性
标签: python class dictionary object