繁体   English   中英

从类变量引用静态方法

[英]referencing static methods from class variable

我知道有这样的情况是有线的但不知怎的,我有它:

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__的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM