我正在开发一个项目,我想让我的一个类可迭代。据我所知,我可以使用元类来做到这一点。TypeError:'type'对象不可迭代 - 迭代对象实例
首先我想了解元类是如何工作的。因此,我想介绍一下我自己做一个汽车类的练习。所以在这里我想让我的Car类对象可迭代,然后我想在主函数中打印它们的名称。
的代码示例如下:
__author__ = 'mirind4'
class IterableCar(type):
def __iter__(self):
return iter(self.__name__)
class Car(object):
__metaclass__ = IterableCar
def __init__(self, name):
self.name = name
if __name__=='__main__':
car1 = Car('Mercedes')
car2 = Car('Toyota')
for cars in Car:
print (cars.name)
但不幸的是我得到了一个类型错误:
TypeError: 'type' object is not iterable
你会这么好心地告诉我哪里做的错误在我的代码?到目前为止,我已经在这个网站和互联网上检查过类似的问题问题,但我不知道问题出在哪里。我正在使用python 3.4。 在此先感谢!
你有'汽车在汽车'。汽车是一个类的定义。你期望做什么?你的意思是把'car1'和'car2'放入一个列表并迭代它?(我发现你的问题的顶部是“让一个类可迭代”的问题,但不清楚你想要什么。'Car'似乎不代表任何类型的集合。) –
@ Two-BitAlchemist - 我认为OP要它产生'C - A - R' ...有趣的概念使一个可迭代的_class _... – mgilson
@mgilson我真的会猜测OP希望它返回到目前为止创建的每个实例,我怀疑是可能的,但我们会看到。 –