Skip to main content
 首页 » 编程设计

python之具有类方法和属性的类在python中不是单例吗

2025年05月04日14JeffreyZhao

我已经阅读了很多解释如何在 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 个不同实例。

这些实例具有共享属性的事实并不能使此类成为单例。