我有一个类看起来像这样的方法
class A(object):
def __init__(self, strat):
self.strat_cls = strat
self._genInstances()
def _genInstances(self):
self.strat = self.strat_cls(self.x, self.y)
和strat_cls:
class strat1(Strat):
def __init__(self, x=4):
self.x = x
def calculate_something(self, event):
if x > 2:
print("hello")
我通过以下方式初始化所有内容:
example = A(strat1)
初始化时,我需要能够将任意数量的参数传递给strat1类中的calculate_something方法,如下所示:
example = A(strat1, x=3)
或
example = A(strat1, x=3, y=5)
其中y将在calculate_something方法中进一步使用。
我该怎么做?我需要能够通过两个"新变量"并覆盖x变量。我曾多次尝试使用* args和** kwargs,但我最终会遇到错误。
答案 0 :(得分:0)
以下是您的评论代码。重点是你必须在 A 中保存参数,并在初始化时将它们传递给 strat 。
class A(object):
def __init__(self, strat, **strat_kwargs):
self.strat_cls = strat
# save kwargs to pass to strat
self.strat_kwargs = strat_kwargs
self._genInstances()
def _genInstances(self):
# init strat with kwargs
self.strat = self.strat_cls(**self.strat_kwargs)
class strat1(Strat):
def __init__(self, x=4, y=None):
# save x and y
self.x = x
self.y = y
def calculate_something(self, event):
# use self.x here
if self.x > 2:
print("hello")