这是我的简单课程:
class row(object):
__slots__ = ("tan_id", "proc_name")
def __init__(
self,
tan_id = "INDETERMINATE",
proc_name = "INDETERMINATE"
):
self.tan_id = tan_id
self.proc_name = proc_name
这个类曾经是一个字典,但我遇到了严重的内存问题。稍后在我的代码中,我使用一个通用函数来循环:
for key, val in row.items()
我不想改变它...所以我的问题是,如何在类中模拟item()函数,以便它在现有的for循环中无缝地工作。
答案 0 :(得分:3)
您可以通过生成相同的键值对来简单地实现模仿先前items
行为的dict.items()
方法:
class row(object):
# ...
def items(self):
# this is the iterator behaviour of 'items' (Py3) or 'iteritems' (Py2)
yield 'tan_id', self.tan_id
yield 'proc_name', self.proc_name
# for the Py2 items behaviour, put these pairs into a list
# and return the list
# Or, more generally:
def items(self):
for slot in self.__slots__:
yield slot, getattr(self, slot)