我知道有这样一个案例是有道理的,但不知何故我有它:
class foo
#static method
@staticmethod
def test():
pass
# class variable
c = {'name' : <i want to reference test method here.>}
有什么办法呢?
仅作记录:
我认为这应该被视为 python 最糟糕的做法。如果有的话,使用静态方法并不是真正的pythoish方式......
我知道有这样一个案例是有道理的,但不知何故我有它:
class foo
#static method
@staticmethod
def test():
pass
# class variable
c = {'name' : <i want to reference test method here.>}
有什么办法呢?
仅作记录:
我认为这应该被视为 python 最糟糕的做法。如果有的话,使用静态方法并不是真正的pythoish方式......
class Foo:
# static method
@staticmethod
def test():
pass
# class variable
c = {'name' : test }
问题是python中的静态方法是描述符对象。所以在下面的代码中:
class Foo:
# static method
@staticmethod
def test():
pass
# class variable
c = {'name' : test }
Foo.c['name']
是描述符对象,因此不可调用。您必须在此处键入Foo.c['name'].__get__(None, Foo)()
才能正确调用test()
。如果您不熟悉 python 中的描述符,请查看词汇表,网上有很多文档。另外,看看这个线程,它似乎接近你的用例。
为简单起见,您可以c
在类定义之外创建该类属性:
class Foo(object):
@staticmethod
def test():
pass
Foo.c = {'name': Foo.test}
或者,如果您愿意,可以深入研究__metaclass__
.