是否可以遍历类人物的对象并提取属性?
所以例如在循环之后从下面的代码输出将是每个对象本身 对象迈克,名字迈克,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)
由于
答案 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岁