python基础知识:导入类(结合注释来理解导入类的常见操作)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/YJG7D314/article/details/102759421

若果你细心地看过前面的文章,你就会细心地发现代码很长。这非常影响我们阅读代码。基于此,随着你不断地给类添加功能,文件可能变得很长,即便你妥善地使用了继承亦如此。为遵循Python的总体理念,应让文件尽可能整洁。为在这方面提供帮助,Python允许你将类存储在模块中,然后在主程序中导入所需的模块。
什么是模块?举个例子,一个Car.py的文件就是一个模块,即 文件名.py = 模块。(个人理解,各位少侠可以在评论里提供不一样的反馈。)

来看看导入单个类
下面来创建一个只包含Car (即class Car():)的模块。此为操作1;
这让我们面临一个微妙的命名问题:在前面的博文中,已经有一个名为car.py的文件,但这个模块也应命名为Car.py,因为它包含表示汽车的代码。此为操作2。
我们将这样解决这个命名问题:问题如下:
将Car 类存储在一个名为Car.py的模块中,该模块将覆盖前面使用的文件Car.py。

从现在开始,使用该模块的程序都必须使用更具体的文件名,如My_car.py。下面是模块Car.py,其中只包含Car 类的代码:

"""一个可用于表示汽车的类"""
class Car:
    def __init__(self,make,model,year):#定义一个特别的初始化方法。无需实例的调用就可运行。减少重复代码的使用量
        #初始化描述汽车的属性
        self.make = make#新建属性。self.属性名 = 属性值。语法借鉴赋值语句。
        self.model = model
        self.year = year
        self.odometer_reading = 0#给属性指定默认值

    def get_descriptive_name(self):#定义获得描述的方法
        #返回整洁的描述信息
        long_name = str(self.year) + " " + self.make + " " + self.model
        return long_name.title()
    def read_odometer(self):#定义读里程表的方法。语法类比函数。
        print("This car has " + str(self.odometer_reading) + " miles on it.")

    def update_odometer(self,mileage):
        """将里程表里的读数设置为指定的值"""
        self.odometer_reading = mileage#通过方法来修改属性值

    def increment_odometer(self,miles):
        """将里程表里的读数增加指定的量"""
        self.odometer_reading += miles#通过方法对属性的值进行递增
my_new_car = Car('audi','a4',2016)#根据Car类创建的一个实例
print(my_new_car.get_descriptive_name())#通过实例来调用方法
#替换一下:print(str(self.year) + " " + self.make + " " + self.model)会报错,在类外面调用初始化方法里的属性必须将self换成实例名
my_new_car.odometer_reading = 23#直接修改属性值
my_new_car.update_odometer(26)#通过方法来修改属性值
my_new_car.read_odometer()#通过实例来调用方法
print("=====================================================")
my_used_car = Car("mini","outback",2013)#根据Car类创建的第二个实例
print(my_used_car.get_descriptive_name())#通过实例来调用方法
my_used_car.update_odometer(25000)#通过方法来修改属性值
my_used_car.read_odometer()#通过实例来调用方法
my_used_car.increment_odometer(100)#通过方法来修改属性值
my_used_car.read_odometer()#通过实例来调用方法

在❶处,我们包含了一个模块级文档字符串(❶ “”“一个可用于表示汽车的类”""),对该模块的内容做了简要的描述。你应为自己创建的每个模块都编写文档字符串。
在这里插入图片描述
在这里插入图片描述

下面来创建另一个文件——My_car.py,在其中导入Car 类并创建其实例:

from Car import Car
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
my_new_car.read_odometer()

❶处的import 语句让Python打开模块car ,并导入其中的Car 类。这样我们就可以使用Car 类了,就像它是在这个文件中定义的一样。输出与我们在前面看到的一样:
在这里插入图片描述
可以比较同样的结果,但通过导入单个类(比如Car,request,time,turtle,random)却节省了代码量。如果你学过爬虫—import request,玩过turtle—import turtle,用过time—import time,用过random—import random,现在应该知道为什么这么操作了—节约代码量啊。

导入类是一种有效的编程方式。如果在这个程序中包含了整个Car 类,它该有多长呀!通过将这个类移到一个模块中,并导入该模块,你依然可以使用其所有功能,但主程序文件变得整洁而易于阅读了。

猜你喜欢

转载自blog.csdn.net/YJG7D314/article/details/102759421