Python 从类变量引用静态方法
我知道有这样一个案子是天生的,但不知怎的,我做到了:Python 从类变量引用静态方法,python,static-methods,class-variables,Python,Static Methods,Class Variables,我知道有这样一个案子是天生的,但不知怎的,我做到了: class foo #static method @staticmethod def test(): pass # class variable c = {'name' : <i want to reference test method here.>} class-foo #静态法 @静力学方法 def test(): 通过 #类变量 c={'name':} 怎么走 仅作记录: 我认为这应该被视
class foo
#static method
@staticmethod
def test():
pass
# class variable
c = {'name' : <i want to reference test method here.>}
class-foo
#静态法
@静力学方法
def test():
通过
#类变量
c={'name':}
怎么走
仅作记录:
我认为这应该被视为python最糟糕的做法。使用静态方法并不是真正的pythoish方式…问题是python中的静态方法是描述符对象。因此,在以下代码中:
class Foo:
# static method
@staticmethod
def test():
pass
# class variable
c = {'name' : test }
class Foo:
# static method
@staticmethod
def test():
pass
# class variable
c = {'name' : test }
Foo.c['name']
是描述符对象,因此不可调用。您必须键入Foo.c['name'].\uuu get\uuu(None,Foo)(
才能在此处正确调用test()
。如果您不熟悉python中的描述符,请看一看,web上有很多文档。另外,看一看,它似乎接近您的用例
为了简单起见,您可以在类定义之外创建c
class属性:
class Foo(object):
@staticmethod
def test():
pass
Foo.c = {'name': Foo.test}
或者,如果你喜欢的话,跳入文档
,如果可能的话,你应该考虑使用新的类。注意,不应该使用<>代码>静态方法> /代码>。Python为这个应用程序提供了正常的函数。这在语法上仍然不是有效的Python