我有一个类,该类具有作为另一个类的对象的属性。第三类继承自第一类,在那里,我想覆盖属性的方法...
class Car:
def __init__(self, door):
self.door = door
class Door:
def __init__(self, color):
self.color = color
def change_color(self):
pass
class CarConstruct(Car):
def __init__(self):
super(CarConstruct, self).__init__(Door('red'))
# Here, I want to override self.door.change_color method
在这种情况下重写的最佳方法是什么?
答案 0 :(得分:1)
此技术称为"monkey patching"。通常应避免使用它,因为这会使代码很难理解和推理。除非您有很好的理由,否则避免使用它。造成这种情况的好原因之一可能是mock a method in unit tests。
如果您仍然想猴子修补一个对象self.door
-check out this answer上的一种方法。