Çalışma zamanında bir nesne örneğine (sınıf değil!) Bir temel sınıf eklenebilir mi? Ruby nasıl Object#extend
eserlerin şey satırları:Python'daki bir örneğe dinamik olarak bir temel sınıfı karıştırın
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"
Neden bunu bir yorum yapmadan reddediyorsunuz? Belki de Ruby kelimesi metinde göründüğü için? o0 –
Uuuuurrgghhh !!!!! Sınıfı değiştirmeden bir örneği değiştirmek, felaket için bir reçete. Bunu yapmanın en güzel yolu, 'Kişinin bir alt sınıfını yapmak ve' Beyefendiyi 'karıştırmaktır. – katrielalex
@katrielalex: Muhtemelen çoğu durumda haklısınız. Yine de, bu işlevselliğe ihtiyacım var çünkü ara yüzünü değiştiremediğim bir üçüncü taraf kitaplığına işlevsellik eklemek istiyorum. Karışımlar ya da proxy modeli arasında seçim yapmak zorunda kaldım. –