使用同一文件中的类作为默认参数

时间:2018-07-09 11:02:20

标签: python python-3.x python-2.7

所以我觉得我缺少明显的东西,但是我无法使它正常工作。这是设置:

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纳入范围?预先感谢!

1 个答案:

答案 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