Рассмотрим две версии простой модели погоды, в которой хранится местоположение облаков:
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)
vs
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(), но мне это не кажется намного лучше.