Ruby相当于Python setattr()

时间:2010-01-25 23:04:06

标签: ruby

好吧,请将我添加到Python程序员列表中,这些程序员爱上了Ruby但有一个挥之不去的PyAddiction。就像关于Python's getattr的帖子一样,我正在寻找与此相同的Ruby:

setattr(obj, 'attribute', value)

其中obj是一个对象实例,attribute是一个对象属性的名称作为字符串,value是该对象的值。等效代码为:

obj.attribute = value

我认为它是可能的(因为Python中的任何可能的东西现在看起来都更容易了),但找不到它的文档。

1 个答案:

答案 0 :(得分:15)

obj.instance_variable_set("@instance_variable", value)obj.send("instance_variable=", value)

前者直接设置实例变量。后者调用setter方法,当然只有在有setter方法时才有效,但另一方面,如果你有一个实际上不设置实例变量的setter方法(或者没有设置实例),它也可以工作变量)。