python入门教程基础语法_Python语法基础(4)|python基础教程|python入门|python教程

https://www.xin3721.com/eschool/pythonxin3721/

2016 tesla model s

创建子类时,父类必须包含在当前文件中,且位于子类的前面

给予类定义属性和方法

下面来添加一个电动车特有的属性(电瓶),以及一个描述该属性的方法。我们将存储电瓶容量,并编写一个打印电瓶描述的方法:

#来创建一个电动车的类

class ElectricCar(Car):

'''电动车独特的属性'''

def __init__(self,make,model,year):

'''

初始化父类的属性

初始化电动车特有的属性

'''

super().__init__(make,model,year)

self.battery_size = 70

def describe_battery(self):

'''打印一条信息来描述电瓶'''

print("这辆电瓶车有着"+ str(self.battery_size) + "容量的电池")

my_tesla = ElectricCar('tesla','model s',2016)

print(my_tesla.get_descriptive_name())

my_tesla.describe_battery()

2016 tesla model s

这辆电瓶车有着70容量的电池

重写父类的方法

​ 对于父类的方法,只要它不符合子类模拟实物的行为,都可以对其进行重写。为此,可以在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法,而只关心你在子类中定义的相应方法:

假设Car类中有一个名为fill_gas_tank()的方法,它对电瓶车来说毫无意义,因此你想要重写它。下面演示了一种重写的方法。

class Car():

def fill_gas_tank(self):

'''为汽车增加尾气排放数值'''

print("该汽车的尾气排放量为"+ str(self.gas_tank) +"每公里")

~~~Python

class ElectricCar(Car):

def fill_gas_tank(self):

'''电动车没有油箱'''

print("电动车不会排除尾气")

my_tesla = ElectricCar('tesla','model s',2016)

print(my_tesla.get_descriptive_name())

my_tesla.describe_battery()

my_tesla.fill_gas_tank()

print("\n")

my_car = Car('本田','思域',2018)

my_car.fill_gas_tank()

~~~

2016 tesla model s

这辆电瓶车有着70容量的电池

电动车不会排除尾气

该汽车的尾气排放量为13每公里

将实例用作属性

​ 使用代码模拟实物时,你可能会发现自己给类添加的细节越来越多:属性和方法清单以及文件都越来越长。在这种情况下,可能需要将类的一部分作为一个独立的类提取出来。你可以将大型类拆分成多个协同工作的小类。

​ 例如,不断给ElectricCar类添加细节时,我们可能会发现其中包含很多专门针对汽车电瓶的属性和方法。在这种情况下,我们可将这些属性和方法提取出来,放到另一个专门名为Battery的类中,并将一个Battery实例用作ElectricCar类的一个属性:

class Car():

```Python

#来创建一个电瓶类

class Battery():

'''一次模拟电动汽车电瓶的简单尝试'''

def __init__(self,battery_size=70):

'''初始化电瓶的属性'''

self.battery_size = battery_size

def describe_battery(self):

'''打印一条描述电瓶的信息'''

print("这辆电动车的电瓶的容量是"+ str(self.battery_size))

#来创建一个电动车的类

class ElectricCar(Car):

'''电动车独特的属性'''

def __init__(self,make,model,year):

'''

初始化父类的属性

初始化电动车特有的属性

'''

super().__init__(make,model,year)

self.battery = Battery()

my_test = ElectricCar('tesla','model s',2016)

print(my_test.get_descriptive_name())

my_test.attery.describe_battery()

```

~~~Python

2016 tesla model s

这辆电动车的电瓶的容量是70

下面再给Battery添加一个方法,它根据电瓶容量报告汽车的续航里程:

class Battery():

'''一次模拟电动汽车电瓶的简单尝试'''

def __init__(self,battery_size=70):

'''初始化电瓶的属性'''

self.battery_size = battery_size

def describe_battery(self):

'''打印一条描述电瓶的信息'''

print("这辆电动车的电瓶的容量是"+ str(self.battery_size))

def get_range(self):

'''打印出一条信息,指出电瓶的续航里程'''

if self.battery_size == 70:

range = 240

elif self.battery_size == 85:

range = 270

message = "现在的电池容量能走"+str(range)+"KM 路程"

print(message)

#来创建一个电动车的类

class ElectricCar(Car):

'''电动车独特的属性'''

def __init__(self,make,model,year):

'''

初始化父类的属性

初始化电动车特有的属性

'''

super().__init__(make,model,year)

self.battery = Battery()

my_test = ElectricCar('tesla','model s',2016)

print(my_test.get_descriptive_name())

my_test.battery.describe_battery()

my_test.battery.get_range()

2016 tesla model s

这辆电动车的电瓶的容量是70

现在的电池容量能走240KM 路程

导入类

随着你不断地给类添加功能,文件可能变得很长,即便你妥善地使用了继承亦如此。为遵循python的总体理念,应让文件尽可能整洁。为在这方面提供帮助,python允许你将类存储在模块中,然后在主程序中导入所需的模块。

导入单个类

#encoding:utf-8

from Car import Car

my_new_car = Car('东风','日产',2022)

print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23

my_new_car.read_odometer()

2022 东风 日产

你的汽车已经行驶了23km!

在一个模块中存储多个类

现在可以新建一个名为my_electric_car.py的文件,导入ElectricCar类,并创建一辆电动汽车了:

#encoding:utf-8

from Car import ElectricCar

my_tesla = ElectricCar('tesla','model s',2016)

print(my_tesla.get_descriptive_name())

my_tesla.battery.describe_battery()

my_tesla.battery.get_range()

2016 tesla model s

这辆电动车的电瓶的容量是70

现在的电池容量能走240KM 路程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值