在实例级别覆盖方法
发布于 2021-01-29 15:23:45
Python中是否有一种方法可以在实例级别覆盖类方法?例如:
class Dog:
def bark(self):
print "WOOF"
boby = Dog()
boby.bark() # WOOF
# METHOD OVERRIDE
boby.bark() # WoOoOoF!!
关注者
0
被浏览
44
1 个回答
-
请不要这样做,如图所示。当您实例化与该类不同的实例时,代码变得不可读。
您无法调试monkeypatched代码。
当您在
boby
和中发现错误时print type(boby)
,您会看到(a)它是一只狗,但是(b)由于某种晦涩的原因,它不能正确吠叫。这是一场噩梦。不要做。请改为这样做。
class Dog: def bark(self): print "WOOF" class BobyDog( Dog ): def bark( self ): print "WoOoOoF!!" otherDog= Dog() otherDog.bark() # WOOF boby = BobyDog() boby.bark() # WoOoOoF!!