2024-10-02 16:22:49 发布
网友
在我的init函数中有一个默认设置列表。这些默认值都是实例变量。例如
self.set_acqmode = 1 self.set_readmode = 4 self.set_triggermode = 0
我在这个类中有一个函数,我想用它来更改这些默认设置,只需传入一个名称和一个值作为参数。例如
访问和更改正确实例变量的python方法是什么。前一个类的和的类都需要引用的类。在
(如果有更好的方法不用搜索变量,我还是想知道如何查看它们,只是出于兴趣)
您当然可以使用__dict__:
__dict__
>>> class Test(object): def __init__(self): self.x = 1 def set(self, attr, val): self.__dict__[attr] = val >>> a = Test() >>> a.set('x', 2) >>> a.x 2
setattr将起作用。但是你必须要问,如果你为了重写setattr而费尽周折,你的方法是否正确?在
setattr
如果你只想有一些任意的键和值-好吧,这是一个字典,你应该这样使用它。如果需要自定义行为,请重写__getitem__/__setitem__。在
__getitem__
__setitem__
如果您真的需要属性,那么父函数没有理由不这么做
myobj.set_triggermode = value
而不是过于复杂
所以你应该这么做。即使您出于某种原因想这样做-使用kwargs而不是args,可能更接近您想要的。在
使用^{}:
def change_setting(self, setting, *arg): setattr(self, setting, arg)
您当然可以使用
__dict__
:setattr
将起作用。但是你必须要问,如果你为了重写setattr而费尽周折,你的方法是否正确?在如果你只想有一些任意的键和值-好吧,这是一个字典,你应该这样使用它。如果需要自定义行为,请重写
__getitem__
/__setitem__
。在如果您真的需要属性,那么父函数没有理由不这么做
而不是过于复杂
^{pr2}$所以你应该这么做。即使您出于某种原因想这样做-使用kwargs而不是args,可能更接近您想要的。在
使用^{} :
相关问题 更多 >
编程相关推荐