Possible to assign a class attribute that's a simple function python
我想在单例中保存对回调函数的引用。但是,python有一些魔力(在分配点或调用点),这意味着函数需要一个实例对象作为第一个参数——我希望能够存储一个简单的函数。我该怎么做?
分配给
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def default(): print"default" class X: func = None @staticmethod def setup(f=default): X.func = f @staticmethod def doit(): if X.func is None: X.setup() # !!!!!!! # TypeError: unbound method g() must be called with X instance as first argument (got nothing instead) X.func() def g(): print"g" X.setup(g) X.doit() |
第一,
如果你这样做:
第一个问题是你的
关于您的问题本身,所发生的是您的类
你需要
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def default(): print"default" class X: func = None @staticmethod def setup(f): if f is None: X.func = staticmethod(default) else: X.func = staticmethod(f) @staticmethod def doit(): if X.func is None: X.setup() X.func() def g(): print"g" X.setup(g) X.doit() |
编辑:请使用python 3