python 类 --导入类

导入类

1.1、导入单个类

如何导入单个类

  1. 以上一节为例,编写一个car.py程序
  2. 编写一个新程序my_car.py
  3. 希望在my.car.py文件中直接使用car.py中的函数,使用from car import Car

实例,新建一个car.py

 1 class Car():
 2     """一次模拟汽车的简单尝试"""
 3     def __init__(self,make,model,year):
 4         self.make = make
 5         self.model = model
 6         self.year = year
 7         self.odometer_reading = 0
 8 
 9     def get_descriptive_name(self):
10         long_name = str(self.year) + " " + self.make + " " + self.model
11         return long_name.title()
12 
13     def read_odometer(self):
14         print("This car has" + str(self.odometer_reading) + "mile on it.")
15 
16     def update_odomter(self,mileage):
17         if mileage >= self.odometer_reading:
18             self.odometer_reading = mileage
19 
20         else:
21             print("You can't roll back an odometer!")
22 
23     def increment_odometer(self,miles):
24         self.odometer_reading += miles

 

新建一个my_car.py

1 from car import Car
2 my_new_car = Car('audi','a8',2018)
3 print(my_new_car.get_descriptive_name())
4 
5 my_new_car.odometer_reading = 23
6 my_new_car.read_odometer()

 

执行结果:

2018 Audi A8
This car has23mile on it.

 

 

1.2、在一个模块中存储多个类

如上级例子所示,将car类作为父类,Electricar(car)作为子类

 1 class Car():
 2     """一次模拟汽车的简单尝试"""
 3     def __init__(self,make,model,year):
 4         self.make = make
 5         self.model = model
 6         self.year = year
 7         self.odometer_reading = 0
 8 
 9     def get_descriptive_name(self):
10         long_name = str(self.year) + " " + self.make + " " + self.model
11         return long_name.title()
12 
13     def read_odometer(self):
14         print("This car has" + str(self.odometer_reading) + "mile on it.")
15 
16     def update_odomter(self,mileage):
17         if mileage >= self.odometer_reading:
18             self.odometer_reading = mileage
19 
20         else:
21             print("You can't roll back an odometer!")
22 
23     def increment_odometer(self,miles):
24         self.odometer_reading += miles
25 
26 
27 # 将实例用作属性
28 class Battery():
29     def __init__(self, battery_size=70):
30         """初始化电瓶的属性"""
31         self.battery_size = battery_size
32 
33     def describe_battery(self):
34         """打印一条描述电瓶容量的信息"""
35         print("This car has a" + str(self.battery_size) + "-KWh battery.")
36 
37     #打印一条消息,指出电瓶的续航里程
38     def get_range(self):
39         if self.battery_size == 70:
40             range = 240
41 
42         elif self.battery_size == 85:
43             range = 70
44 
45         msg = "This car can go approximately" + str(range)
46         msg += "miles on a full charge."
47         print(msg)
48 
49 
50 class ElectricCar(Car):
51     """电动汽车的独特"""
52 
53     def __init__(self,make,model,year):
54         """初始化父类的属性"""
55         super().__init__(make,model,year)
56 
57         # 给子类定义属性和方法
58         # self.battery_size = 70  #新属性
59         #初始化父类的属性,再初始化电动车特有的属性
60         self.battery = Battery()
61 
62     # #给子类定义属性和方法
63     def describe_battery(self):
64         """打印一条描述电瓶容量的消息"""
65         print("This car has a " + str(self.battery_size) + "-KWh battery.")
66 
67     #重写父类的方法
68     def fill_gas_tank():
69         """电动汽车没有油箱"""
70         print("This car doesn't need a gas tank.")
View Code

在新的文件中,直接调用ElectricCar类即可。 

1 from car import ElectricCar
2 
3 my_tesla = ElectricCar("tesla",'model 2019',2019)
4 print(my_tesla.get_descriptive_name())
5 my_tesla.battery.describe_battery()
6 my_tesla.battery.get_range()

执行结果:

1 2019 Tesla Model 2019
2 This car has a70-KWh battery.
3 This car can go approximately240miles on a full charge.

 

1.3、从一个模块中导入多个类

 

1 from car import Car,ElectricCar

 

 1 from car import Car,ElectricCar #import语句让python打开模块car,并导入其中的Car类
 2 
 3 my_new_car = Car('audi','a4',2016)
 4 print(my_new_car.get_descriptive_name())
 5 my_new_car.read_odometer()
 6 
 7 my_tesla = ElectricCar('tesla','roadstater',2016)
 8 print(my_tesla.get_descriptive_name())
 9 
10 """导入类是一种有效的编程方式。"""

 

1.4、导入整个模块

  1. 导入整个模块
  2. 使用句点表示法访问需要的类

 

1 import Car

 实例

1 #导入整个模块
2 import car
3 my_beetle = car.Car('volkswagen','beetle',2019)
4 print(my_beetle.get_descriptive_name())
5 
6 my_tesla = car.Car('tesla','roadster',2018)
7 print(my_tesla.get_descriptive_name())

运行结果:

2019 Volkswagen Beetle
2018 Tesla Roadster

 

 

1.5、导入模块中的所有类

from modele_name import *

 

 

 

类编码风格

  • 类名应采用驼峰命名法 ,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
  • 对于每个类,都应紧跟在类定义后面包含一个文档字符串。这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定。
  • 每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。
  • 可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。
  • 需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import 语句,再添加一个空行,然后编写导入你自己编写的模块的import 语句。在包含多条import 语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方

 

欢迎关注我的公众号,扫码获取Python资料。

posted @ 2019-02-19 22:17  局长  阅读(20227)  评论(0编辑  收藏  举报