我想做的事情......
class MyClassA(object):
an_attr = AnotherClassB(do_something=MyClassA.hello)
@classmethod
def hello(cls):
return "Hello"
然而,当我尝试运行时,它会告诉我MyClassA没有被定义。
an_attr
必须是类属性AnotherClassB
hello()
仍然是一个类方法有什么想法吗?
答案 0 :(得分:3)
在定义类时,该类尚不存在。因此,您必须将an_attr
的创建推迟到类定义之后:
class MyClassA(object):
@classmethod
def hello(cls):
return "Hello"
MyClassA.an_attr = AnotherClassB(do_something=MyClassA.hello)
答案 1 :(得分:3)
你必须得到正确的订单,所以在你使用它之前就定义了它:
class MyClassA(object):
@classmethod
def hello(cls):
return "Hello"
an_attr = AnotherClassB(do_something=hello)
请注意,因为我们在创建课程时它位于命名空间中,所以我们只引用hello
,而不是MyClassA.hello
。
编辑:抱歉,这实际上并没有按照我的想法行事。它创建没有错误的类,但AnotherClassB
只获得对未绑定的classmethod的引用,该方法无法调用。
答案 2 :(得分:2)
我不确定这是否有效,但试试看?
class MyClassA(object):
@classmethod
def hello(cls):
return "Hello"
MyClassA.an_attr = AnotherClassB(do_something=MyClassA.hello)