【发布时间】:2021-09-20 13:39:32
【问题描述】:
我想知道哪种方式是调用单例变量的最佳、最合适或最 Pythonic。
这是我的单例代码:
class SingletonMeta(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
instance = super().__call__(*args, **kwargs)
cls._instances[cls] = instance
return cls._instances[cls]
class Singleton(metaclass=SingletonMeta):
@classmethod
def set_value(cls, key, value):
setattr(cls, key, value)
return value
@classmethod
def get_value(cls, key):
return getattr(cls, key)
我的第一个方法是这样的:
Singleton.set_value('my_value', True)
print(Singleton.get_value('my_value'))
但对我来说它看起来有点“丑陋”。
所以我将 Singleton 类更改为简单的 pass 然后我可以这样做:
Singleton.my_value = True
print(Singleton.my_value)
为了让 PyCharm 平静下来,我添加了 Singleton 类 my_value = None。
我想知道,这些方法中哪种方法最好?或者也许我应该以不同的方式来处理它?
【问题讨论】: