LSP 定义指出,如果 S 是 T 的子类型,那么程序中的类型 T 的对象可以用类型 S 的对象替换,而不会改变该程序的任何所需属性。
不能在子类型中加强先决条件
不能在子类型中削弱后置条件。
超类型的不变量必须保留在子类型中。
例如,我有下面的类,这是否违反了(不能在子类型中加强前提条件)。我正在努力解决这个问题,有人可以提供一个很好的例子来理解它。
Class Switch:
def __init__(self,ip,dc):
self.ip=ip
self.dc=dc
class CiscoSwitch(Switch):
def __init__(self,ip,dc,zone):
super().__init__(ip,dc)
self.zone=zone
class JuniperSwitch(Switch):
def __init__(self,ip,dc,zone):
super().__init__(ip,dc)
self.zone=zone
呼啦一阵风
相关分类