Discuss / Python / setattr()一般用在什么地方呢?

setattr()一般用在什么地方呢?

Topic source

setattr(obj, 'y', 19)和obj.y = 9 似乎在执行上没有什么区别。 为什么还需要用前者来设置属性呢? 尝试了一下,感觉setattr()还可以用来设置方法。但是设置的方法不能调用内部类的内部数据。

class MyObject(object): ... def init(self): ... self.x = 9 ... def power(self): ... return self.x * self.x ... obj = MyObject() setattr(obj, 'sum', lambda x:x + 1) obj.sum() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: <lambda>() missing 1 required positional argument: 'x' 那setattr()一般用在什么地方呢?

Mr_RightMen

#2 Created at ... [Delete] [Delete and Lock User]

当然有区别了,你的obj.y=9,要是本身object里面没有y这个属性,会报错,而用setattr则不会报错。

To Mr_RightMen: 好像不会报错啊.....我记得不会.实施了下也不会

郝仁E哥

#4 Created at ... [Delete] [Delete and Lock User]

@Mr_RightMen obj.y = 9 若本身object里面没有y这个属性,也不会报错噢,类会新建一个属性y的

郝仁E哥

#5 Created at ... [Delete] [Delete and Lock User]

@哈先生5880565266 你的setattr(obj, 'sum', lambda x:x + 1) 中的x是lambda中的x,而非MyObject中的x,你可以这样用:setattr(obj, 'sum', lambda x:obj.x + 1) 至于setattr的作用就是添加属性的其中一种方法,添加属性也有其他方法。。


  • 1

Reply