http://wota.jp/ac/?date=20060503
少しでもスマートに実現できる方法があれば教えてください。
URLはダミーです。
こんなのではダメでしょうか?
class A: def dan(self, x): return x+1
a = A() print a.dan(1) # 2 A.__dict__['kogai'] = lambda self,x: x+2 print a.kogai(1) # 3
もちろん lambda でなくても良いですが。
URLはダミーです。
こんなのではダメでしょうか?
class A: def dan(self, x): return x+1
a = A() print a.dan(1) # 2 A.__dict__['kogai'] = lambda self,x: x+2 print a.kogai(1) # 3
もちろん lambda でなくても良いですが。
回答ありがとうございます。
この例でいうと、
print a.dan(1) # 4 => (x+1)+2として解釈
を出すようにしたいです。
こんな感じでしょうか?
class A: def dan(self, x): return x+1
setattr(A, "old_dan", A.dan) setattr(A, "dan", lambda self,x: self.old_dan(x)+1) a = A() print a.dan(1)
回答ありがとうございます。
setattrで定義すればいけそうですね。
def alias_method_chain( foo, bar) setattr(A, "foo_without_bar", foo) setattr(A, "foo_with_bar", lambda self: (self.foo_without_bar, self.bar) ) setattr(A, "foo", foo_with_bar)
って感じで定義したいですが、これってどうかけば動くんですかね。
回答ありがとうございます。
この例でいうと、
print a.dan(1) # 4 => (x+1)+2として解釈
を出すようにしたいです。