對於Ruby有沒有像Python __getattr__
的東西?在Python中,當引用未定義的屬性(方法或屬性)時,將調用obj.__getattr__
。我在Ruby中發現了method_missing
,但它不適用於屬性。Python像__getattr__ for Ruby/JRuby
我的用例是: 我正在測試Mirah作爲JRuby - > Java編譯器。在標準JRuby中,Swing方法和屬性是「Rubyfied」(例如:label.setText「x」=> label.text =「x」),但Mirah中沒有,因爲Mirah沒有像JRuby這樣的專有運行時庫。然後,我想在運行時獲取屬性引用,並將每個調用映射到相應的Swing方法(label.text => label.getText()/ label.text =「x」=> label.setText(「x」)) 。
可能的重複:http://stackoverflow.com/questions/786412/what-is-the-ruby-equivalent-of-pythons-getattr – jsalonen
@jsalonen:無重複,getattr' <>'__getattr__'。 Python getattr類似於Ruby的「method」:obj.getattr(「value」)等同於obj.value。 '__getattr__'是一個'魔術'方法,當一個未定義的屬性被引用時被調用 – PabloG