2010-01-25 62 views
8

那麼,請將我添加到正在愛上Ruby的Python程序員列表中,但有一個揮之不去的PyAddiction。喜歡該職位約Python's getattr,我找了Ruby相當於這樣做的:Ruby的等價的Python setattr()

setattr(obj, 'attribute', value) 

其中obj是一個對象實例,屬性是作爲字符串對象的屬性之一的名稱和值是該對象的值。等效代碼之中:

obj.attribute = value 

我假設這是可能的(因爲任何可能在Python似乎甚至在紅寶石現在更容易),但無法找到它的文檔。

回答

14

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

前者直接設置實例變量。後者調用setter方法,這當然只在存在setter方法的情況下才起作用,但另一方面,如果你有一個setter方法實際上只設置一個實例變量(或者沒有設置實例)可變)。

+2

注意:「instance_variable_set」和「send」的第一個參數也可以是符號 – horseyguy 2010-01-26 00:53:39