我经常注意到,我并不清楚知道一些子类的超类是否应该更一般或更多地限制属性。这是一个人为的例子来说明我的意思:
# A) superclass more general (union of attributes)
class human:
self.__init__(height, beardColor, nailColor):
self.height=height
self.beardColor=beardColor
self.nailColor=nailColor
class man(human):
self.__init__(heigth, beardColor):
super().__init__(height, beardColor, None)
class woman(human):
self.__init__(heigth, nailColor):
super().__init__(height, None, nailcolor)
# B) superclass more specific (intersection of attributes)
class human:
self.__init__(height):
self.height=height
class man(human):
self.__init__(heigth, beardColor):
super().__init__(height)
self.beardColor=beardColor
class woman(human):
self.__init__(heigth, nailColor):
super().__init__(height)
self.nailColor=nailColor
它以某种方式归结为一个问题,即超类是否应该拥有子类的所有属性的联合,或者更确切地说是它们的交集。
他们对哪种范式更好的一般规则是什么?