[英]How can a python object's classmethods be referred to inside the class attributes?
我想做些...
class MyClassA(object):
an_attr = AnotherClassB(do_something=MyClassA.hello)
@classmethod
def hello(cls):
return "Hello"
但是,当我尝试运行MyClassA时,它会告诉我未定义。
an_attr
必须是一个类属性 AnotherClassB
hello()
仍然是类方法 有任何想法吗?
在定义类时,该类尚不存在。 因此,您必须将an_attr
的创建推迟到类定义之后:
class MyClassA(object):
@classmethod
def hello(cls):
return "Hello"
MyClassA.an_attr = AnotherClassB(do_something=MyClassA.hello)
您只需要正确处理订单,就可以在使用之前对其进行定义:
class MyClassA(object):
@classmethod
def hello(cls):
return "Hello"
an_attr = AnotherClassB(do_something=hello)
请注意,由于创建类时它位于名称空间中,因此我们仅引用hello
而不是MyClassA.hello
。
编辑 :对不起,这实际上并没有按照我的想法做。 它创建的类没有错误,但是AnotherClassB
仅获得对未绑定的类方法的引用,该方法无法调用。
我不确定这是否行得通,但是可以尝试一下吗?
class MyClassA(object):
@classmethod
def hello(cls):
return "Hello"
MyClassA.an_attr = AnotherClassB(do_something=MyClassA.hello)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.