zoukankan      html  css  js  c++  java
  • 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 语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方
  • 相关阅读:
    简单工厂模式实例
    浅析面向对象和面向过程
    equals与“==”的区别
    IIS挂起网站配置文件地址
    先安装win7时IIS的安装
    验证码的使用
    c#引用命名空间的作用
    ADO与ADO.NET的区别
    常用的数据库访问方式
    Exercise 11: Asking Questions
  • 原文地址:https://www.cnblogs.com/aszeno/p/10403736.html
Copyright © 2011-2022 走看看