我的初始化函数中包含一个默认设置列表。这些默认值都是实例变量。例如,

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,可能更接近您想要的参数。

10-06 13:34
查看更多