我试图设置某个类AuxiliaryClass
的属性值,而不是以最有效的方式在MainClass
类的方法中实例化。
AuxiliaryClass
是在MainClass
的方法中实例化的-见下文。但是,AuxiliaryClass
有许多不同的属性,我需要在实例化类之后设置这些属性的值—请参阅我代码的最后3行。你知道吗
注意:由于这里无法解释设计约束,我的类只包含方法,这意味着我需要将属性声明为方法(见下文)。你知道吗
class AuxiliaryClass(object):
def FirstMethod(self):
return None
...
def NthMethod(self):
return None
class MainClass(object):
def Auxiliary(self):
return AuxiliaryClass()
def main():
obj = MainClass()
obj.Auxiliary().FirstMethod = #some_value
...
obj.Auxiliary().NthMethod = #some_other_value
# ~~> further code
基本上,我想用更整洁、更优雅、更高效的代码替换最后3行代码。我知道如果我直接实例化AuxiliaryClass
,我可以使用字典:
d = {'FirstMethod' : some_value,
...
'NthMethod' : some_other_value}
obj = AuxiliaryClass(**d)
但这似乎对我的问题结构不起作用。最后,我需要在实例化MainClass
之后设置AuxiliaryClass
属性的值(因此我不能在方法Auxiliary
中设置属性的值)。你知道吗
有比obj.Auxiliary().IthMethod = some_value
更好的方法吗?
编辑
有几个人说过以下几句话:
obj.Auxiliary().FirstMethod = #some_value
...
obj.Auxiliary().NthMethod = #some_other_value
不会有任何影响,因为他们会立即得到垃圾收集。我真的不明白这意味着什么,但如果我执行以下行(在上面的行之后):
print(obj.Auxiliary().FirstMethod())
...
print(obj.Auxiliary().NthMethod())
我正在获取以前输入的值。你知道吗
为了加快速度,并使定制变得更简洁,您可以缓存} 。你知道吗
AuxilliaryClass
构造函数/单例/访问器的结果,并循环调用dict
的^{尝试以下操作:
我理解这里发生的事情:我的代码在所有允许记忆的方法之前有一系列的修饰符。我不知道它们具体是如何工作的,但是当使用上面描述的问题时,
obj.Auxiliary().IthMethod = some_value
类型的行立即被垃圾收集-不会发生。你知道吗不幸的是,我不能提供更多的细节,因为1)我不太了解他们,2)我不能把这些信息传输到我的公司以外。我认为在这种情况下很难回答我的问题,因为我不能完全披露所有必要的细节。你知道吗
相关问题 更多 >
编程相关推荐