我已经阅读了很多解释如何在 python 中实现单例的文章,比如 Creating a singleton in Python
我在想,有类方法和属性的类不就是单例类吗
例如
class my_singleton_class(object):
_logger = Logger ()
_printer = Printer ()
@classmethod
def logger(cls):
return cls._logger
@classmethod
def printer(cls):
return cls._printer
这不是 pythonic 吗?这个单例实现有什么问题?
请您参考如下方法:
I was wondering, isn't a class with class methods and attributes is a singleton class.
没有。
根据定义,单例类是您不能为其创建超过 1 个实例的类。
让我们来测试一下:
class my_singleton_class(object):
_logger = 1
_printer = 2
@classmethod
def logger(cls):
return cls._logger
@classmethod
def printer(cls):
return cls._printer
print(id(my_singleton_class()))
print(id(my_singleton_class()))
>> 8322128
>> 8322192
我们显然设法创建了这个类的 2 个不同实例。
这些实例具有共享属性的事实并不能使此类成为单例。
