如何解决如何使用类装饰器实现单例模式?
我想使用类装饰器来实现python单例模式。 我使用了两种写法,但是我没有得到相同的类实例地址。
def singleton(cls):
_instance = {}
def _singleton(*args,**kwargs):
if cls not in _instance:
_instance[cls] = cls(*args,**kwargs)
return _instance[cls]
return _singleton
@singleton
class A(object):
def __init__(self):
print('A __init__')
class B(object):
def __init__(self):
print('B __init__')
a1 = A()
a2 = A()
print(id(a1),id(a2))
b1 = singleton(B)()
b2 = singleton(B)()
print(id(b1),id(b2))
A __init__
2777380227448 2777380227448
B __init__
B __init__
2777380227952 2777380237776
类实例的两个地址不一样。我不明白它是如何工作的。这不就是编写类装饰器的两种方式吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。