当我想从类中返回对象,同时可以打印这个结果时,我应该怎么做
我这样做:
class Engine:
def __init__(self, mylist):
self._mylist = list(mylist)
def __str__(self) -> str:
return ','.join(el.__str__() for el in self._mylist)
def __repr__(self):
return self._mylist
但当我这样做的时候:
p = Engine(lst)
print(p)
for x in p:
print("Element", x)
我得到:
element1, element2, element3
TypeError: 'Engine' object is not iterable
我应该怎么做才能打印这个结果,并像对象一样迭代它
您可以引用其中一个类变量使其工作。默认情况下,不能迭代整个对象。正确的方法是遍历您传递的列表,它现在是一个对象变量。如果您运行以下命令,它将起作用:
但是我猜您正在寻找另一种解决方案,因为您将列表命名为
_mylist
,这通常意味着不应该从外部访问此变量因此,您可以将对象本身转换为iterable。为此,需要定义
__iter__
dunder方法,并在将其视为迭代器时定义其行为相关问题 更多 >
编程相关推荐