Python-理解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时,实例之间的状态实际上是如何共享的呢?!

  • _shared_state是一个类变量,由类的所有实例共享
  • __new__方法负责创建类的实例,因此可以使用此方法自定义对象创建
  • __dict__是用于存储对象(可写(属性的字典或其他映射对象。或者换句话说,__dict__是包含类的名称空间的字典
  • 对于所有创建的对象,__dict__都被相同的字典对象_shared_state覆盖,因此它们都将共享并使用相同的__dict__对象

最新更新