我需要为我的代码创建一个单例。所以我跟着these instructions, method 3。
以下是我的代码:
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
def MyCfg(object):
__metaclass__ = Singleton
def __init__(self, p1 = 1, p2 = 2):
# Some code
my_cfg = MyCfg()
但是,当我运行此代码时,出现以下错误:
TypeError: MyCfg() takes exactly 1 argument (0 given)
我对python
和编程并不陌生,但我从未在此级别与python
合作过。我一直试图了解Singleton
课程究竟发生了什么,但我无法理解。
是否有人能够解释为什么此代码会生成错误?
答案 0 :(得分:2)
你有:
def MyCfg(object)
我很确定你的意思是:
class MyCfg(object)
您看到的错误(TypeError: MyCfg() takes exactly 1 argument (0 given)
)是因为使用您当前的代码,您正在定义一个名为MyCfg
的函数,该函数只接受一个参数(您不是提供)。