我有一个继承自不可变类型的类,它使用__new__
. 我如何将一个新参数添加到一个函数并优雅地将它传递给第二个函数,我知道它在执行链中?
class ImmutableClass(ImmutableType):
def functionA(param1=None, param2=None):
# Do some stuff
stuff self.functionB(param2)
# Do some more stuff
return stuff
def functionB(param2):
# Do some stuff
newObjects = [ImmutableClass() for x in range(len(param2))]
stuff = self.functionC(newObjects)
# Do some more stuff
return stuff
def functionC(param3=None):
# Do some stuff
return stuff
class SomeClass(ImmutableClass):
def __new__(cls, *args, **kwargs):
return ImmutableClass.__new__(SomeClass, *args, **kwargs)
def functionA(self, newParameter=True):
# How do I pass newParameter to functionC?
return super(ImmutableClass, self).functionA(*args, **kwargs)
def functionC(self, newParameter=True):
# How do I get the parameter from functionA?
if not newParameter:
print 'Success!'
return super(ImmutableClass, self).functionC(*args, **kwargs)
我知道我可以将 **kwargs 添加到ImmutableClass
链中的所有函数中,但这感觉有点混乱。这些函数的调用者可能会在很长一段时间内传递无效参数,然后才会出错,或者将标志传递给某个意外函数。我希望有一些我没有看到的明显解决方案。
我知道ImmutableClass
有functionA
呼叫functionB
,然后呼叫functionC
。但是,调用在functionB
代码中间,所以我不能简单地预先/附加新调用。我不能使用成员变量(据我所知),因为__new__
在调用的中途重新初始化它。我可以访问ImmutableClass
's 的源代码,但我不想更改它,因为ImmutableClass
应该不知道SomeClass
. SomeClass
我曾考虑过使用全局变量,但如果部分开始第二次调用functionA,恐怕会做意想不到的事情。