一些子类的超类应该更通用还是更具体?

时间:2016-08-30 09:25:29

标签: python

我经常注意到,我并不清楚知道一些子类的超类是否应该更一般或更多地限制属性。这是一个人为的例子来说明我的意思:

# 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

它以某种方式归结为一个问题,即超类是否应该拥有子类的所有属性的联合,或者更确切地说是它们的交集。

他们对哪种范式更好的一般规则是什么?

0 个答案:

没有答案