继承有什么好处?最大的好处是子类获得了父类的全部功能。
判断一个变量是否是某个类型可以用isinstance()判断:
>>>isinstance(a, list)
True
这就是多态真正的威力:调用方只管调用,不管细节
对扩展开放:允许新增Animal子类;
对修改封闭:不需要修改依赖Animal类型的run_twice()等函数。
动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。
在评论区的一个串联整篇的例子
#定义一个父类一个子类
class Province(object):
def __init__(self,proname):
self.proname=proname
def ps(self):
print('I am in %s'%self.proname)
class City(Province):
def __init__(self,proname,cityname):
self.cityname=cityname
Province.__init__(self,proname)
def ps1(self):
print('I\'m in %s-%s' %(self.proname,self.cityname))
#定义一个独立的类
class Timer(object):
def ps(self):
print('我不属于Province类或其子类,但我有ps方法我同样可以被调用')
def ps1(self):
print('我不属于Province类或其子类,但我有ps1方法我同样可以被调用')
#定义一个函数
def f(x):
x.ps()
x.ps1()
#调用部分
f(City('上海','浦东'))
f(Timer())
返回结果I am in上海I'm in上海-浦东
我不属于Province类或其子类,但我有ps方法我同样可以被调用我不属于Province类火气子类,但我有ps1方法我同样可以被调用
网友评论