インスタンスレベルでメソッドをオーバーライドする 質問する

インスタンスレベルでメソッドをオーバーライドする 質問する

Python でインスタンス レベルでクラス メソッドをオーバーライドする方法はありますか? 例:

class Dog:
    def bark(self):
        print "WOOF"

boby = Dog()
boby.bark() # WOOF
# METHOD OVERRIDE
boby.bark() # WoOoOoF!!

ベストアンサー1

はい、可能です:

class Dog:
    def bark(self):
        print "Woof"

def new_bark(self):
    print "Woof Woof"

foo = Dog()

funcType = type(Dog.bark)

# "Woof"
foo.bark()

# replace bark with new_bark for this object only
foo.bark = funcType(new_bark, foo, Dog)

foo.bark()
# "Woof Woof"

おすすめ記事