実行時にオブジェクトクラス(クラスではない)に基本クラスを追加することは可能ですか? RubyでどのようにObject#extend
作品の線に沿って何か:Pythonで基本クラスをインスタンスに動的に組み合せる
class Gentleman(object):
def introduce_self(self):
return "Hello, my name is %s" % self.name
class Person(object):
def __init__(self, name):
self.name = name
p = Person("John")
# how to implement this method?
extend(p, Gentleman)
p.introduce_self() # => "Hello, my name is John"
なぜコメントなしでこれを下げますか?たぶんRubyという言葉がテキストに表示されているからでしょうか? oO –
Uuuuurrghghhh !!!!!クラスを変更せずにインスタンスを変更することは、災害のためのレシピです。これを行うためのより良い方法は、 'Person'のサブクラスを作成し、' Gentleman'をそれにミックスすることです。 – katrielalex
@katrielalex:ほとんどの場合、おそらくあなたは正しいでしょう。それにもかかわらず、インタフェースを変更できないサードパーティライブラリに機能を追加したいので、私はその機能が必要です。ミックスインかプロキシパターンのどちらかを選ぶ必要がありました。後者はあまり好きではありません。 –