Discuss / Python / 小白的十万个为什么

小白的十万个为什么

Topic source

class Runnable(object): def run(self):
        print('Running...')
为什么这里要写成继承自超类object,而不是继承自Animal呢?

灿_Clarence

#2 Created at ... [Delete] [Delete and Lock User]

我也是这个疑惑。。明明写成Runnable(Animal)会更好呀。。毕竟区分跑和飞的前提是它也要属于动物吧。求解答~

飘飘零洛

#3 Created at ... [Delete] [Delete and Lock User]

玩具飞机也能飞啊

能飞能跑只是一种属性,而这两种属性不局限于生物,非生物也有,为了使Runable 和Flyable能够映射到更多的子类里,就不能把这两类定义在Animal类下

mf734

#5 Created at ... [Delete] [Delete and Lock User]

那是因为现实生活中ANIMAL不会是最大最顶上的那个父类,比如你这里把FLYABLE只定义成ANIMAL的,那如果还有飞机类,还有卫星类,那你还得分成ANIMAL FLYABLE,PLANE FLYABLE,或者SAT FLYABLE,那不是又是一样的问题吗,难道你再把FLYABLE往上面丢一层吗?

多重继承的重点,不是叫你把功能或者属性往父类扔然后让子类继承,而是把通用的功能单独列成一个类,然后让其他类去继承他。这样就不会分ANIMAL FLYABLE还是PLANE FLYABLE了,不管是个啥,只要会分,通通继承FLYABLE这个类。哪怕是你完全自己重新新建的类,只要能飞,也可以直接继承FLYABLE。


  • 1

Reply