Excel不相邻列如何打印在一起-英雄云拓展知识分享
131
2023-11-07
【摘要】 本书摘自《Python学习笔记 从入门到实战》一书中第7章,第6节,由张学建编著。
7.6 继承
7.6.1 定义子类
在 Python程序中,定义子类的语法格式如下所示上述语法格式非常容易理解:“ClassName1” 表示子类(派生类)名, “ClassName2” 表示基类(父类)名。如果在基类中有一个方法名,而在子类使用时未指定,Python 会从左 到右进行搜索。也就是说,当方法在子类中未找到时,从左到右查找基类中是否包含方法
另外,基类名 ClassName2 必须与子类在同一个作用域内定义。
例如在本章前面的实例中,我们多次用到了汽车的场景模拟。其实市场中的汽车品牌有 很多,例如宝马、奥迪、奔驰、丰田、比亚迪等。如果想编写一个展示霍老二豆腐车的程序, 最合理的方法是先定义一个表示汽车的类,然后定义一个表示某个品牌汽车的子类。例如在 下面的实例中,代码中,首先定义了汽车类Car, 能够表示所有品牌的汽车。然后定义了基 于汽车类的子类 Bmw, 用于表示宝马牌豆腐汽车。
实例7-17:霍老二的一辆豆腐车
源码路径:下载包\daima\7\7-17
实例文件 car_bmw.py 的具体实现代码如下所示。
class Car():
"""汽车之家!"""
def init_(self,manufacturer,model,year):
"""初始化操作,建立描述汽车的属性."""
self.manufacturer =manufacturer
lff. =el
self.odometer_reading =0
def get_descriptive name(self):
"""返回描述信息"""
long_name =str(self.year)+''+self.manufacturer.+''+self.model return long_name.title()
def read_odometer(self):
"""行驶里程."""
print(“这是一辆豆腐车,目前仪表显示行驶里程是”+ str(self.odometer_
reading)+ “公里!”)
class Bmw(Car):
"""这是一个子类 Bmw, 基类是Car."""
def __init__(self,manufacturer,model,year):
super(). init (manufacturer,model,year)
my_tesla =Bmw('宝马',”拉豆腐525Li','2019 款 '
print(my_tesla.get_descriptive_name())
对上述实例代码的具体说明如下所示。
(1)汽车类Car 是基类(父类),宝马类Bmw 是派生类(子类)。
(2)在创建子类 Bmw 时,父类必须包含在当前文件中,且位于子类前面。
(3)上述加粗部分代码定义了子类Bmw, 在定义子类时,必须在括号内指定父类的名称。 方法 init()可以接受创建 Car 实例所需的信息。
(4)加粗代码中的方法 super() 是一个特殊函数,功能是将父类和子类关联起来。可以 让 Python 调用 Car 的父类的方法 init(), 可以让 Bmw 的实例包含父类Car 中的所有属性。 父类也被称为超类(superclass), 名称 super 因此而得名。
(5)为了测试继承是否能够正确地发挥作用,在倒数第2行代码中创建了一辆宝马汽 车实例,代码中提供的信息与创建普通汽车的完全相同。在创建类Bmw 的一个实例时,将 其存储在变量 my_tesla 中。这行代码调用在类 Bmw 中定义的方法 init (), 后者能够让 Python 调用父类Car 中定义的方法 init ()。在代码中使用了三个实参“宝马”、“拉豆腐
525Li”和“2019款”进行测试。
执行后会输出:
2019款宝马拉豆腐525Li
注意:除了方法 init )外,在子类Bmw中没有其他特有的属性和方法,这样做的目的 是验证子类汽车 (Bmw) 是否具备父类汽车 (Car) 的行为。
7.6.2 在子类中定义方法和属性
在 Python 程序中,子类除了可以继承使用父类中的属性和方法外,还可以单独定义自 己的属性和方法。例如继续拿宝马子类进行举例,在宝马5系中,530Li 配备的是6缸3.0T 发动机。例如在下面的实例中,我们可以定义一个专有的属性来存储这个发动机参数。
实例7-18:豆腐车的发动机参数
源码路径:下载包\daima\7\7-18
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~