所以我觉得我缺少明显的东西,但是我无法使它正常工作。这是设置:
class Foo:
def __init__(self, cls=Bar):
self.bar = cls()
class Bar:
def __init__(self):
pass
这给了我:
NameError: name 'Bar' is not defined
但是,如果我要在另一个文件中执行诸如放置栏之类的操作,并使用import Bar
,那么它将起作用,因此这似乎是范围问题。如何将Bar纳入范围?预先感谢!
答案 0 :(得分:3)
交换订单,因此在Bar
中使用Foo
时将是已知的。请注意,默认参数是在函数定义时评估的,而不是在调用函数时评估的。
class Bar:
def __init__(self):
pass
class Foo:
def __init__(self, cls=Bar):
self.bar = cls() # also you might want to actually use the parameter