2021-12-12 Python-16

导入类

为了让文件看起来更整洁,更突出主次,可以将类存储在模块中,然后将模块导入主程序即可。
假设我们将以下的代码保存为 car.py 文件

#一个可以用来表示汽车的类
class Car():
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=50
    def get_descriptive_name(self):
        long_name=str(self.year)+' '+self.make+' '+self.model
        print(long_name)
    def current_odometer(self,meter):
        if odometer_reading < meter:
            self.odometer_reading=meter
        print('current odometer is ' + str(self.odometer_reading))
    def gasoline_left(self,volume):
        print('there is'+' ' +str(volume)+'L '+'gasoline left.')

再将关于 ElectricCar 类存储为electriccar.py文件

#表示电动汽车类的描述
from car import Car
class Battery():
    #将电池的描述单独抽出来组成一个类
    def __init__(self,battery_size=70):
        self.batter_size=battery_size
    def describe_battery(self):
        print('This Car has a '+str(self.battery_size)+'-kWh battery')

class ElectricCar(Car):
      '''描述电动汽车的特征'''
    def __init__(self,make,model,year):
        #初始化父类的属性
        super().__init__(make,model,year)
        #将Battery类作为ElectricCar的属性
        self.battery_size =Battery()
    def describe_battery(self):
        #定义ElectricCar类中特有的方法,而Car中不存在
        print('this car has a '+str(self.battery_size)+' kWh battery')
    def gasoline_left(self):
    #对该方法进行重新改写
        print('This car doesn't need a tank !')

ele=ElectricCar('tesla','model s',2020)
ele.battery_size.describe_battery()

在electriccar.py文件中,因为 ElectricCar 类需要 Car 作为父类,所以需要从car.py 文件中导入 Car 类
此时需要 electriccar.py 和 car.py 位于同一个文件夹。

在相同的目录下创建一个新的文件 my_car.py

from car import Car
import electriccar
my_beetle=Car('volkswagen','beetle',2019)
my_tesla=electriccar.ElectricCar('tesla','roadster',2020)

导入模块可以通过from import 语句也可以直接 import 整个文件。通过前者方法,可以直接使用类名,而后者需要modulename.classname

你可能感兴趣的:(2021-12-12 Python-16)