迭代类的实例化对象

时间:2017-03-25 19:47:14

标签: python class object

是否可以遍历类人物的对象并提取属性?

所以例如在循环之后从下面的代码输出将是每个对象本身 对象迈克,名字迈克,20岁

class Person(object):
    def__init__(self,name,age):
    self.name = name
    self.age = age


mike = Person('Mike',20)
john = Person('John',20)
jack = Person('Jack',20)
adam = Person('Adam',20)

由于

3 个答案:

答案 0 :(得分:2)

Python类不会自动跟踪其所有实例。如果需要,可以使用class属性自己跟踪它们:

class Person(object):
    people = []

    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.people.append(self)

更好的方法是拥有一个跟踪人物的单独对象。此处的Person.people属性是进程的单个全局值,可能会限制类的可用性和可测试性。

答案 1 :(得分:1)

要循环给定实例的属性,我认为你正在寻找内置函数vars

>>> mike = Person('Mike', 20)
>>> vars(mike)
{'age': 20, 'name': 'Mike'}

要遍历给定类的所有实例是不可能的,除非您添加一些代码来自己维护实例列表。

答案 2 :(得分:1)

如果我的理解是正确的,那么你就是在问一个循环这个班级的人 那么就可以这样做。

class person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
for name,age in {'mike':20,'john':20,'jack':20}.iteritems():
    p = person(name,age)
    print ('I am %s my age is %d' %(p.name,p.age))
##回答 我是迈克,我的年龄是20岁 我约翰,我的年龄是20岁 我是杰克,我的年龄是20岁