在实例级别覆盖方法

发布于 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 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    请不要这样做,如图所示。当您实例化与该类不同的实例时,代码变得不可读。

    您无法调试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!!
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看