Ruby – 动态添加属性到类(在运行时)

这个问题在这里已经有一个答案:> adding attributes to a Ruby object dynamically5个
我正在寻找一种在运行时向已经定义的类添加属性方法,或者更好:
class Client
    attr_accessor :login,:password
    def initialize args = {}
        self.login    = args[:login]
        self.password = args[:password]
    end
end

但是,我有这个哈希

{:swift_bic=>"XXXX",:account_name=>"XXXX",:id=>"123",:iban=>"XXXX"}

我希望这个哈希成为我客户端实例的一部分

client = Client.new :login => 'user',:password => 'xxxxx'

然后有一个神奇的魔法

client @@%$%PLIM!!! {:swift_bic=>"XXXX",:iban=>"XXXX"}

我可以访问

client.swift_bic => 'XXXX'
client.account_name => 'XXXX'
client.id => 123

我也想保持一个适当的对象结构,如:

Client.new(:login => 'user',:password => 'xxxxx').inspect
#<Client:0x1033c4818 @password='xxxxx',@login='user'>

魔术之后

client.inspect
#<Client:0x1033c4818 @password='xxxxx',@login='user',@swift_bic='XXXX',@account_name='XXXX' @id => '123',@iban => 'XXXX'>

这将给我一个非常好的和格式良好的json之后

有可能吗

我从一个webservice得到这个哈希,所以我不知道这里是一个新的属性,然后我将不得不更新我的应用程序,每次他们执行他们的服务升级.
所以我试图避免这样做:

感谢chaps.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...