gpt4 book ai didi

python - 在 Python 中迭代给定类的对象实例

转载 作者:IT老高 更新时间:2023-10-28 21:17:21 25 4
gpt4 key购买 nike

给定一个保存其对象注册表的类:

class Person(object):
__registry = []

def __init__(self, name):
self.__registry.append(self)
self.name = name

如何使以下代码工作(不使用 Person.__registry):

for personobject in Person:
print personobject

在研究过程中,我发现了一个提示,可以使用 __getitem__ 方法来使用 __metaclass__。有什么想法吗?

最佳答案

您可以使用简单的元类使您的类对象可迭代。

class IterRegistry(type):
def __iter__(cls):
return iter(cls._registry)

class Person(object):
__metaclass__ = IterRegistry
_registry = []

def __init__(self, name):
self._registry.append(self)
self.name = name

(我还将 __registry 更改为 _registry 以便更容易从元类访问)。那么,

>>> p = Person('John')
>>> p2 = Person('Mary')
>>> for personobject in Person:
... print personobject
...
<person.Person object at 0x70410>
<person.Person object at 0x70250>

关于python - 在 Python 中迭代给定类的对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/739882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com