有没有办法增加多个类实例的属性? 假设我有一本字典,其中包含每个人有多少钱:
money = {'John':20, 'Mary':5, 'Robert':10}
我可以通过以下方式增加所有三个人的值:
for person, value in money.items():
money[person] += 10
这给出了:
{'Mary': 15, 'John': 30, 'Robert': 20}
课程怎么样?
class person:
def __init__(self, name, money):
self.name = name
self.money = money
Mary = person("Mary",5)
Robert = person("Robert",10)
John = person("John",20)
我需要做些什么才能增加所有类实例的货币价值?
结果应该是:
Mary.money == 15
Robert.money == 20
John.money == 30
答案 0 :(得分:2)
people = (Mary, Robert, John)
for person in people:
person.money += 10
编辑:同时正确命名您的班级(Person
)!查看python's conventions。
答案 1 :(得分:0)
您应该将所有实例放在一个列表中并使用for。
for person in people:
person.money += 10
它也可以获取课程person
的每个实例,并为所有这些实例增加.money
,但它不是很安全&#34 ; (例如,你可以有一些你不想改变的课程实例)和#34; pythonic"。如果您仍想这样做,可以这样做:
import gc
for obj in gc.get_objects():
if isinstance(obj, person):
obj.money += 1
答案 2 :(得分:0)
您可以让类支持保存所创建的任何实例,然后使用它:
class Person:
people = [] # <-- creates a list
def __init__(self, name, money):
self.name = name
self.money = money
person.people.append(self) # <-- save the instance into the list
def __repr__(self):
return self.name + ' ' + str(self.money) # for printing purpose
Mary = Person("Mary",5)
Robert = Person("Robert",10)
John = Person("John",20)
for p in Person.people:
p.money += 10
print p
<强>输出强>
Mary 15
Robert 20
John 30