前提:
在真实世界中,类型之间可能存在范围包含关系,比如:人这个类型和亚洲人这个类型。
人是包括了亚洲人的,如果某人是员工亚洲人,那么它必定是一个人
这种关系,在编程语言中称为继承关系
比如上面例子:亚洲人这个类就继承了人这个类
通常把被继承的类称为父类或者基类
把继承类称为子类 或者 派生类
例子:Benz2016、Benz2018继承BenzCar类
class BenzCar:
brand = '奔驰'
country = '德国'
@staticmethod
def pressHorn():
print("嘟嘟~~")
def __init__(self, color, engineSN):
self.color = color
self.engineSN = engineSN
def changeColor(self, newColor):
self.color = newColor
class Benz2016(BenzCar):
price = 502222
model = 'Benz2016'
class Benz2018(BenzCar):
price = 902222
model = '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 =number
def 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'
"""