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