[英]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.