Python工程师之Python编程:从入门到实践【2.9】

9.4 导入类

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

9.4.1 导入单个类

        下面来创建一个只包含Car 类的模块。这让我们面临一个微妙的命名问题:在本章 中已经有一个名为car.py的文件,但这个模块也应命名为car.py,因为它包含表示 汽车的代码。我们将这样解决这个命名问题:将Car 类存储在一个名为car.py的模 块中,该模块将覆盖前面使用的文件car.py。从现在开始,使用该模块的程序都必 须使用更具体的文件名,如my_car.py。下面是模块car.py,其中只包含Car 类的代 码: car.py

 """一个可用于表示汽车的类。"""
class Car:
"""一次模拟汽车的简单尝试。"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性。"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述性名称。"""
long_name = f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
"""打印一条消息,指出汽车的里程。"""
print(f"This car has {self.odometer_reading} miles on it.")
def update_odometer(self, mileage):
"""
将里程表读数设置为指定的值。
拒绝将里程表往回调。
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
"""将里程表读数增加指定的量。"""
self.odometer_reading += miles

❶处包含一个模块级文档字符串,对该模块的内容做了简要的描述。你应为自己创建
的每个模块编写文档字符串。
下面来创建另一个文件my_car.py,在其中导入Car 类并创建其实例:
my_car.py
 

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

处的import 语句让Python打开模块car 并导入其中的Car 类。这样,我们就可
以使用Car 类,就像它是在这个文件中定义的一样。输出与我们在前面看到的一
样:
2019 Audi A4
This car has 23 miles on it.
导入类是一种有效的编程方式。如果这个程序包含整个Class 类,它该有多长啊!
通过将这个类移到一个模块中并导入该模块,依然可以使用其所有功能,但主程序
文件变得整洁而易于阅读了。这还让你能够将大部分逻辑存储在独立的文件中。确
定类像你希望的那样工作后,就可以不管这些文件,而专注于主程序

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值