none
Topic source兄弟,JAVA(静态语言)的继承不仅仅是继承参数和方法,还继承了血统(类型),如果一个JAVA函数只接受animal类型的参数,那么就算你写一个dog类有animal的所有参数和方法也不能作为这个函数的参数。 但是python就不一样,动态语言的特性决定了你只要具备这个函数所使用的方法,就可以作为这个函数的参数,所以继承是“不必要的”,因为它只要看起来像animal就行了,可以没有他的“血统”。 所以python的“多态”其实好像也没什么用,应为新增的animal子类可以用run_twice的本质原因不是因为子类也是animal,而是因为子类由于继承一定拥有run方法。
关于前半句继承object类的问题,请注意2和3的区别。
class Animal:
pass
上述代码在3中是默认继承了object类,属于new-style class。在2中是需要明确继承关系的,所以写成
class Animal(object):
pass
要不然就属于classic class了。
- 1
yun___雲
所有有效的类追溯源泉都是继承自object,就是大家都有一个祖宗,这么看来最后那个动态语言所谓的不要求严格继承关系是一句废话啊,其实大家都是有关系的啊。