我有一个主脚本,我正在导入另一个带有类的模块。当我实例化类时,其中一个参数是y
,因此我在self.y = y
方法中有一个等效的__init__
。现在的问题是,在主脚本中,我有一个for
循环,它会更改y
值并调用方法' live_plotting'来自同一个班级。我通常必须再次传递y
值作为参数,并在方法中包含另一个self.y = y
。这不是很整洁,是否有任何方法可以跨模块更新self.y
而无需再次作为参数传入?我想过使用指针,但显然一切都是python中的指针。有人可以提供替代解决方案吗?
答案 0 :(得分:2)
我不确定它是不是你想要的,但根据我的理解,你想在没有方法的情况下更新self.y的值?
这可以通过执行
来完成object_name.y = new_value
其中object_name
是您为类的实例提供的名称,因为在__init__
中声明的 self 变量是属于该类实例的属性。
答案 1 :(得分:0)
根据我的理解,mutator并不是你想要的。 mutator是类中的一个函数,它访问属性并修改它的值。
我认为在您的代码中,您希望使用y
,就像self.y
和y
相互关联一样。但是,当您将y
作为参数提供给函数时,self.y = y
函数中的y
是您作为参数传递的y
的副本。然后self.y = y
获取复制的y
的值并将其存储在self.y
中。
在实现对象后:
my_instance = class(x,y)
#if you want to modify my_instance.y
my_instance.y = value
或在课堂上使用mutator:
def set_y(self,value):
self.y=value
然后在你的主要时你想要修改y:
my_instance.set_y(value)