让我用下面这个简单的例子来解释我所说的“虚拟/占位符定义”是什么意思。不知道该怎么称呼他们。在
class GateBase:
def __init__(self):
self.inputs = None
self.output = None
def eval(self):
raise NotImplementedError
class AndGate(GateBase):
def __init__(self, *inputs):
super().__init__()
self.inputs = inputs
def eval(self):
self.output = all(inp for inp in self.inputs)
class OrGate(GateBase):
...
class XorGate(GateBase):
...
基类中只抛出异常的eval
函数没有实际函数。如果基类中没有伪eval
,如果派生类“忘记”实现它自己的eval
,那么无论如何都会抛出一个异常,只是一个不同的类型。无需提醒。在
self.inputs
也是类似的情况。必须简单地定义每个类的可用性。在
那么在基类中定义self.inputs
和{
使用“假人”的主要目的是多态性原理:
Wikipedia - Polymorphism (computer_science)
这个原则对于所有面向对象的语言都是通用的。该原则的主要思想是为每个派生类在基类中固定相同的接口。这就是为什么应该在基类中使用抽象方法来确保它们在派生类中的存在和实现。在
相关问题 更多 >
编程相关推荐