前提:
在真实世界中,类型之间可能存在范围包含关系,比如:人这个类型和亚洲人这个类型。
人是包括了亚洲人的,如果某人是员工亚洲人,那么它必定是一个人
这种关系,在编程语言中称为继承关系
比如上面例子:亚洲人这个类就继承了人这个类
通常把被继承的类称为父类或者基类
把继承类称为子类 或者 派生类
例子:Benz2016、Benz2018继承BenzCar类
class BenzCar:brand = '奔驰'country = '德国'@staticmethoddef pressHorn():print("嘟嘟~~")def __init__(self, color, engineSN):self.color = colorself.engineSN = engineSNdef changeColor(self, newColor):self.color = newColorclass Benz2016(BenzCar):price = 502222model = 'Benz2016'class Benz2018(BenzCar):price = 902222model = 'Benz2018'
2 继承
2.1 私有属性
私有属性
- 双下滑线开头:__attr
- 声明为私有属性,那么该说明属性是类私有的,仅限于在类里面使用,不要在类外面去调用
2.2 类的继承关系:
通过使用父类的方法,使其不重复去定义各种方法
问:通过继承能够获得什么?
- 子类通过继承可以自动获得父类的一切属性和方法
- 被继承的类叫父类,继承的类叫子类
- 注意:私有属性不能继承
- 作用:子类通过继承可以获得父类的属性和方法,提高开发的效率及代码的复用性
- 继承是单边关系
- 一般继承不超过2层
2.2.1 继承的定义
语法
继承
父类、子类
继承:如何表示?
class 子类名(父类名):pass
1)一个子类在继承父类的一切特性的基础上,可以有自己的属性和方法
例子1:smartPhone继承了Phone
lass Phone:def __init__(self, number):self.number =numberdef call(self, to, records = False):"打电话"print("{}给{}打电话".format(self.number, to))if records:self.record()def record(self):'录音'print("{}正在录音".format(self.number))class smartPhone(Phone):'智能手机'model = '智能手机'normal_phone = Phone('1')
print(normal_phone.record())smart_phon = smartPhone('123')
print(smart_phon.record())
print(smart_phon.number)"""
1正在录音
None
123正在录音
None
123
"""
2) 父类当中不能调用子类方法
#父类当中不能调用子类方法
class smartPhone(Phone):'智能手机'def watch_movie(self, name):print("{}正在看电影".format(name))normal_phone = Phone('1')
print(normal_phone.record())
print(normal_phone.watch_movie())"""
AttributeError: 'Phone' object has no attribute 'watch_movie'
"""