我有一个继承自使用__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
的来源,但我不想改变它,因为ImmutableClass
应该不了解SomeClass
。我曾经想过使用一个全局变量,但是如果SomeClass
的部分开始第二次调用functionA,我担心会出现意想不到的事情。