对于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