考虑存储云位置的简单天气模型的两个版本:
class cloud:
def __init__(self, x, y):
self.x = x
self.y = y
collection = []
collection.append(cloud(1,2))
collection.append(cloud(4,6))
def update_all_clouds(collection):
for c in collection:
cloud.x += 1
cloud.y += 1
update_all_clouds(collection)
对比
class cloud:
collection = []
def __init__(self, x, y)
self.x = x
self.y = y
cloud.collection.append(self)
@classmethod
def update_all(cls):
for c in cloud.collection:
c.x += 1
c.y += 1
cloud(1,2)
cloud(4,6)
cloud.update_all()
这基本上已经被惩罚了 ,将一个类的所有实例存储在一个类字段中是不是很糟糕? 但这里强调作用于所有实例的类方法。对于第二种方法提供的最后三行的简单性,没有什么可说的吗?
我知道另一种方法是创建一个类似列表的类,例如,collection 并为该类提供 update_all() 等方法,但对我来说似乎并没有好多少。