Я видел этот фрагмент кода в руководстве по шаблону проектирования Monostate в Python:
class BookShelf:
_shared_state = {}
def __init__(self, number_of_books):
self.number_of_books = number_of_books
def __new__(cls, *args, **kwargs):
object_ = super().__new__(cls)
object_.__dict__ = cls._shared_state
return object_
Когда я тестировал этот код, он работал, поскольку адреса классов разные, а number_of_books
разделяется между ними. Я не понимаю, как number_of_books
передается _shared_state
. Из кода я понимаю, что _shared_state
передается в атрибут __dict__
новых объектов. Так как же состояние фактически распределяется между экземплярами, если __dict__
никогда не передается в _shared_state
?!