我导入了一个具有默认参数Foo
的类dir
,如果执行函数doit
。如何更改默认dir
?我是否需要继承此类然后更改它,如何?
class Foo(object):
def __init__(self, dir='xxx'):
self.bar = doit(dir) # fails because xxx is wrong
答案 0 :(得分:3)
为什么在构造类的实例时不要提供不同的参数:
foo = Foo(dir='something else')
btw:dir
是一个内置的python,因此不是变量名的最佳选择。
如果你想改变默认值,你可以确实继承:
class MyFoo(Foo):
def __init__(self, d='somethig else'):
super().__init__(d=d)
答案 1 :(得分:1)
只需为Foo
个对象创建一个工厂函数,然后完成它:
def create_foo():
return Foo(dir='my correct value goes here')
由于您要导入Foo
,您可以更进一步,只需像这样隐藏Foo
:
def Foo():
import foo
return foo.Foo(dir='my correct value goes here')
当然,你可以继承Foo
。一定要查看如何打电话给基地
类构造函数。我发现很难记住我最终谷歌它。每一个。单。时间。