我的初始化函数中包含一个默认设置列表。这些默认值都是实例变量。例如,
self.set_acqmode = 1
self.set_readmode = 4
self.set_triggermode = 0
我在该类中有一个函数,我想通过仅传递名称和值作为参数来更改这些默认设置。例如,
def change_setting(self, setting, *arg):
访问和更改正确的实例变量的Python方法是什么。我尝试使用vars()和dict来查看这些变量,但是前者仅显示类的函数,而后者需要引用类的实例(由于该类在类中,因此将不存在)。
(如果有一种更好的方法而不搜索变量,我仍然很想知道如何查看它们,只是出于兴趣。)
最佳答案
setattr
将起作用。但是您不得不问,如果您正在经历所有麻烦来重写setattr,您是否甚至在以正确的方式进行操作?
如果您只想拥有一些任意的键和值-那是一本字典,应该这样使用。如果需要自定义行为,请覆盖__getitem__
/ __setitem__
。
如果您确实需要属性,那么没有理由父函数不会仅仅这样做
myobj.set_triggermode = value
而不是过于复杂
myobj.change_setting('triggermode', value)
所以你应该这样做。即使您出于某些原因要这样做,也可以使用kwargs而不是args,可能更接近您想要的参数。