大家好今天学习9.4.3 从一个模块中导入多个类 。由于我还有别的工作所以有时候会忙的断更,不过我还是要继续做完。
喜欢python就关注冠山巡山使。 我将跟大家一块自学完python语言。
![85a6b54621b2d856740f2ad46be308ff.png](https://i-blog.csdnimg.cn/blog_migrate/2501bb08c8f60f47bafc0764720692cb.jpeg)
9.4.3 从一个模块中导入多个类
下面代码1是上节的car模块代码,看过的可以跳过代码1
car.py
代码1(模块代码)
"""一组用于表示燃油汽车和电动汽车的类"""class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""我们定义了方法__init__()里面有四个形参""""""初始化描述汽车的属性"""self.make= make """定义变量品牌"""self.model= model"""定义变量型号"""self.year= year"""定义变量生产日期"""self.odometer_reading=0"""添加一个名为odometer_reading的变量属性值为0"""def get_descriptive_name(self):"""定义get这个方法""""""返回整洁的描述性信息"""long_name= str(self.year)+ ' ' + self.make + ' ' +self.modelreturn long_name.title()def read_odometer(self):"""添加read_odometer方法""""""打印一条指出汽车里程的消息"""print("这个车辆有"+ str(self.odometer_reading) +"公里")def update_odometer(self,mileage):"""将里程表读数设置为指定的值""""""将里程表读数设置为指定的值禁止将里程表读数往回调"""if mileage>=self.odometer_reading:"""如果行驶里程数>=里程表读数"""self.odometer_reading=mileage"""行驶里程数就可以赋值给里程表"""else:"""如果不是"""print("这个车的里程表"+ str(mileage) +"不能往回调")"""就打印出这个车的里程表不能往回调"""def increment_odoment(self,miles):""""将里程表读数增加指定的量"""self.odometer_reading += milesclass Battery():"""定义一个电瓶的类"""def __init__(self,battery_size=70):"""初始化电瓶的容量"""self.battery_size=battery_sizedef describe_battery(self):print("这个电瓶容量是"+str(self.battery_size)+"千瓦")def get_range(self):"""打印一条消息,指出电瓶的续航里程"""if self.battery_size==70:range=240elif self.battery_size==85:range=270message="这个汽车大概能开"+str(range)message="充满电后的续航里程"print(message)class ElectricCar(Car):"""我们定义了子类ElectricCar,并指定父类的名称Car""""""电动汽车的独特之处初始化父类的属性,再初始化电动汽车特有的属性"""def __init__(self,make,model,year):"""初始化父类属性"""super().__init__(make,model,year)self.battery=Battery()def fill_gas_tank():"""定义一个汽车没有邮箱方法"""print("这两汽车没有邮箱")
![988c61dc824e920d4ed519168531ea0f.png](https://i-blog.csdnimg.cn/blog_migrate/b26653b00edb07c65395c07296b5f5b0.jpeg)
car.py
![21e5fd6f5d6f46e1e1e6cfa3394438d3.png](https://i-blog.csdnimg.cn/blog_migrate/cd5982a15a263e2e5d3e4138e8531cd9.jpeg)
car.py
![e4767a563f273294209b5a0e5702d20a.png](https://i-blog.csdnimg.cn/blog_migrate/1ce8cad42adee89d56b788129ed52702.jpeg)
car.py
可根据需要在程序文件中导入任意数量的类。如果我们要在同一个程序中创建普通汽车和电
动汽车,就需要将Car和ElectricCar类都导入:
my_cars.py
代码2(测试正常)
"""新代码1"""from car import Car,ElectricCar"""新代码1""""""新代码2"""my_beetle=Car('大众','甲壳虫',2016)print(my_beetle.get_descriptive_name())"""新代码2""""""新代码3"""my_tesla=ElectricCar('特斯拉','ms',2020)print(my_tesla.get_descriptive_name())"""新代码3"""
在新代码1处从一个模块中导入多个类时,用逗号分隔了各个类。导入必要的类后,就可根据需要
创建每个类的任意数量的实例。
在这个示例中,我们在新代码2处创建了一辆大众甲壳虫普通汽车,并在新代码3处创建了一辆特斯拉
Roadster电动汽车:
执行后
![3e6887c3e7c65b60beeb8b90d28cb249.png](https://i-blog.csdnimg.cn/blog_migrate/aa1a43adc1c50b2d0d542dbed9b8f240.jpeg)
2016 大众 甲壳虫2020 特斯拉 Ms
上面是导入模块中的两个类代码
9.4.4 导入整个模块
你还可以导入整个模块,再使用句点表示法访问需要的类。这种导入方法很简单,代码也易
于阅读。由于创建类实例的代码都包含模块名,因此不会与当前文件使用的任何名称发生冲突。
下面的代码导入整个car模块,并创建一辆普通汽车和一辆电动汽车:
my_cars.py
代码3(测试正常)
"""新代码1"""import car """新代码1""""""新代码2"""my_beetle=car.Car('大众','甲壳虫',2016)print(my_beetle.get_descriptive_name())"""新代码2""""""新代码3"""my_tesla=car.ElectricCar('特斯拉','ms',2020)print(my_tesla.get_descriptive_name())"""新代码3"""
![aa6b733a25c915d4c5eb0c7f68e86204.png](https://i-blog.csdnimg.cn/blog_migrate/09e6aa0e3d81bf88e4b633fc2df1a01a.jpeg)
在新代码1处,我们导入了整个car模块。接下来,我们使用语法module_name.class_name访问需要
的类。像前面一样,我们在新代码2处创建了一辆大众甲壳虫汽车,并在新代码3处创建了一辆特斯拉Roadster汽车。
9.4.5 导入模块中的所有类
要导入模块中的每个类,可使用下面的语法:
"""新代码1"""from car import * """新代码1""""""新代码2"""my_beetle=Car('大众','甲壳虫',2016)print(my_beetle.get_descriptive_name())"""新代码2""""""新代码3"""my_tesla=ElectricCar('特斯拉','ms',2020)print(my_tesla.get_descriptive_name())"""新代码3"""
![57efc8fcd6f988925022e6255a7d654d.png](https://i-blog.csdnimg.cn/blog_migrate/3f2c83e66121660629146d6697e3874b.jpeg)
我们不推荐使用这种导入方式,其原因有二。首先,如果只要看一下文件开头的import语句,就
能清楚地知道程序使用了哪些类,将大有裨益;但这种导入方式没有明确地指出你使用了模块中
的哪些类。这种导入方式还可能引发名称方面的困惑。如果你不小心导入了一个与程序文件中其
他东西同名的类,将引发难以诊断的错误。这里之所以介绍这种导入方式,是因为虽然不推荐使
用这种方式,但你可能会在别人编写的代码中见到它。
需要从一个模块中导入很多类时,最好导入整个模块,并使用module_name.class_name语法
来访问类。这样做时,虽然文件开头并没有列出用到的所有类,但你清楚地知道在程序的哪些地
方使用了导入的模块;你还避免了导入模块中的每个类可能引发的名称冲突。
因为后面代码篇幅比较大。大家看起来也不便。所以自学教程我会分割的比较多些。类还有几小节就学完了。
今天学到这里。明天继续 类 的学习
如果喜欢可以 点赞+关注冠山巡山使 or 评论+转发此文章让其他喜欢Python的同学看到吆 。明天见!
关注冠山巡山使+私信:“编辑器”三个字 就可以有这个编辑器的下载地址了。关注冠山巡山使+私信:“自学python”可以下载此教程!(我是参考此教程做的自学课程。大多数人儿只是下载下来。看完的很少。希望能跟我一块自学完!)