假设您正在创建一个涉及大型类层次结构的项目,它涉及相当复杂的初始化方法,这些方法从叶类一直到根调用父类,就像生命的分类法一样
每个Organism
都有许多参数,这些参数与层次结构中的任何专门参数一起共享
假设在开发过程中,您意识到您可能需要向一个有机体的构造器添加另一个参数,每个有机体都应该能够用它来构造。将此参数添加到类层次结构中,构造类的最佳方法是什么?我可以想出两种方法:
优点:
缺点:
示例:
class Organism:
def __init__(a=1, b=2, ...):
...
...
class HomoSapiens(Homo):
def __init__(a=None, b=None, ..., c=1, d=2):
...
super().__init__(a=a, b=b, ..., c=c)
class CanisFamiliaris(Canis):
def __init__(a=None, b=None, ..., e=1, f=2):
...
super().__init__(a=a, b=b, ..., e=e)
优点:
缺点:
示例:
class Organism:
def __init__(a=1, b=2, ...):
...
...
class HomoSapiens(Homo):
def __init__(c=1, d=2, **kwargs):
...
super().__init__(c=c, **kwargs)
class CanisFamiliaris(Canis):
def __init__(e=1, f=2, **kwargs):
...
super().__init__(e=e, **kwargs)
第二种选择很有诱惑力,因为在签名更改的情况下,它涉及的编辑要少得多,但它是否牺牲了太多的清晰度
目前没有回答
相关问题 更多 >
编程相关推荐