栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第九章 类

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第九章 类

第九章 类 9.1 创建和使用类 9.1.1 创建类
  • 根据约定,在 Python中,首字母大写的名称指的是类
  • 类中的函数称为方法
  • 在类中的函数,需要默认有self形参,并且在首部,作用是传递类去找到方法
  • init()是初始化方法
class Dog:
    """模拟一次小狗的简单尝试"""
    def __init__(self, name, age):
        """初始化小狗的名字和年龄"""
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name}坐下")

    def rool_over(self):
        print(f"{self.name}翻滚")
9.1.2 根据类创建实例 9.1.2.1 创建实例
class Dog:
    """模拟一次小狗的简单尝试"""
    def __init__(self, name, age):
        """初始化小狗的名字和年龄"""
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name}坐下")

    def rool_over(self):
        print(f"{self.name}翻滚")

my_dog = Dog("wakuwaku", "2")	# 创建一个实例

print(f"我的小狗叫做{my_dog.name},今年{my_dog.age}岁了")

my_dog.sit()
my_dog.rool_over()
9.1.2.1 访问属性
print(f"我的小狗叫做{my_dog.name},今年{my_dog.age}岁了")	# 访问实例的属性,使用句点表示
9.1.2.2 调用方法
  • 要有实例才可以使用
my_dog.sit()
my_dog.rool_over()
9.1.2.3 实例支持多个
class Dog:
    """模拟一次小狗的简单尝试"""
    def __init__(self, name, age):
        """初始化小狗的名字和年龄"""
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name}坐下")

    def rool_over(self):
        print(f"{self.name}翻滚")

my_dog = Dog("wakuwaku", "2")
you_dog = Dog("小黄", "3")

print(f"我的小狗叫做{my_dog.name},今年{my_dog.age}岁了")
print(f"我的小狗叫做{you_dog.name},今年{you_dog.age}岁了")

my_dog.sit()
my_dog.rool_over()

you_dog.sit()
you_dog.rool_over()
9.2 使用类和实例 9.2.1 简单的例子
class Car:
    """一次模拟汽车的简单尝试"""

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_descriptive_name(self):
        long_name = f"{self.make} {self.model} {self.year}"
        return long_name.title()

my_new_cat = Car("宝马", "X3", "2022")

print(f"我新买的车{my_new_cat.get_descriptive_name()}")
9.2.2 给属性指定默认值
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.make} {self.model} {self.year}"
        return long_name.title()

my_new_cat = Car("宝马", "X3", "2022")

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
9.2.3 修改属性的值
  • 直接修改
my_new_cat.odometer_reading = 23

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
  • 通过方法修改
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

my_new_cat = Car("宝马", "X3", "2022")

my_new_cat.update_odometer(23)
my_new_cat.update_odometer(0)
print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
  • 通过方法对属性的值进行递增
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")


my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")
9.3 继承
  • 编写类时,并非总是要从空白开始。如果要编写的类是另一个现成类的 特殊版本,可使用继承。一个类继承另一个类时,将自动获得另一个类 的所有属性和方法。原有的类称为父类,而新类称为子类。子类继承了 父类的所有属性和方法,同时还可以定义自己的属性和方法。
9.3.1 子类的方法______init__()
  • 创建子类时,父类必须包含在当前文件中,且位于子类前面

  • 定义子类必须要在圆括号指定父类名称

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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法

my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")

my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
my_new_Electrocar.increment_odometer(300)
print(f"我新买的电动车{my_new_Electrocar.get_descriptive_name()},它的公里数为{my_new_Electrocar.odometer_reading}")
print(f"我已经开新车行驶{my_new_Electrocar.odometer_reading}公里了")
9.3.2 给子类定义属性和方法
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法
        """定义电动车自己的初始属性"""
        self.battery_size = 75

# 第一辆油车
my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")

# 第一辆电动车
my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
my_new_Electrocar.increment_odometer(300)

print(f"我新买的电动车{my_new_Electrocar.get_descriptive_name()},它的公里数为{my_new_Electrocar.odometer_reading},有{my_new_Electrocar.battery_size}KWH的电池")
print(f"我已经开新车行驶{my_new_Electrocar.odometer_reading}公里了")
9.3.3 重写父类的方法
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")

    def fill_gas_tank(self, litre):
        """油箱大小"""
        fuel_tank_size = litre
        return fuel_tank_size


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法
        """定义电动车自己的初始属性"""
        self.battery_size = 75

    def fill_gas_tank(self):
        """重写定义父类方法"""
        print("电车没有油箱")

# 第一辆油车
my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading},油箱大小为{my_new_cat.fill_gas_tank(70)}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")

# 第一辆电动车
my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
my_new_Electrocar.increment_odometer(300)

print(f"我新买的电动车{my_new_Electrocar.get_descriptive_name()},它的公里数为{my_new_Electrocar.odometer_reading},有{my_new_Electrocar.battery_size}KWH的电池")
print(f"我已经开新车行驶{my_new_Electrocar.odometer_reading}公里了")
my_new_Electrocar.fill_gas_tank()
9.3.4 将实例用作属性
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")

    def fill_gas_tank(self, litre):
        """油箱大小"""
        fuel_tank_size = litre
        return fuel_tank_size


class Battery:
    """单独定义电动车的电池"""
    def __init__(self, battery_size=75):
        self.battery_size = battery_size

    def describe_battery(self):
        print(f"电动车的电池容量为{self.battery_size}")
        
    def get_range(self):
        if self.battery_size == 75:
            range = 260
        elif self.battery_size == 100:
            range = 315

        print(f"这辆车可以使用{range}公里")


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法
        """创建一个电池实体,并且附属给 self.battery 属性"""
        self.battery = Battery()

    def fill_gas_tank(self):
        """重写定义父类方法"""
        print("电车没有油箱")

my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
# 电动车.电池.打印电池容量
my_new_Electrocar.battery.describe_battery()
# 获取公里数
my_new_Electrocar.battery.get_range()
my_new_Electrocar.battery.battery_size = 100
my_new_Electrocar.battery.get_range()
第九章 类 9.1 创建和使用类 9.1.1 创建类
  • 根据约定,在 Python中,首字母大写的名称指的是类
  • 类中的函数称为方法
  • 在类中的函数,需要默认有self形参,并且在首部,作用是传递类去找到方法
  • init()是初始化方法
class Dog:
    """模拟一次小狗的简单尝试"""
    def __init__(self, name, age):
        """初始化小狗的名字和年龄"""
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name}坐下")

    def rool_over(self):
        print(f"{self.name}翻滚")
9.1.2 根据类创建实例 9.1.2.1 创建实例
class Dog:
    """模拟一次小狗的简单尝试"""
    def __init__(self, name, age):
        """初始化小狗的名字和年龄"""
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name}坐下")

    def rool_over(self):
        print(f"{self.name}翻滚")

my_dog = Dog("wakuwaku", "2")	# 创建一个实例

print(f"我的小狗叫做{my_dog.name},今年{my_dog.age}岁了")

my_dog.sit()
my_dog.rool_over()
9.1.2.1 访问属性
print(f"我的小狗叫做{my_dog.name},今年{my_dog.age}岁了")	# 访问实例的属性,使用句点表示
9.1.2.2 调用方法
  • 要有实例才可以使用
my_dog.sit()
my_dog.rool_over()
9.1.2.3 实例支持多个
class Dog:
    """模拟一次小狗的简单尝试"""
    def __init__(self, name, age):
        """初始化小狗的名字和年龄"""
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name}坐下")

    def rool_over(self):
        print(f"{self.name}翻滚")

my_dog = Dog("wakuwaku", "2")
you_dog = Dog("小黄", "3")

print(f"我的小狗叫做{my_dog.name},今年{my_dog.age}岁了")
print(f"我的小狗叫做{you_dog.name},今年{you_dog.age}岁了")

my_dog.sit()
my_dog.rool_over()

you_dog.sit()
you_dog.rool_over()
9.2 使用类和实例 9.2.1 简单的例子
class Car:
    """一次模拟汽车的简单尝试"""

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_descriptive_name(self):
        long_name = f"{self.make} {self.model} {self.year}"
        return long_name.title()

my_new_cat = Car("宝马", "X3", "2022")

print(f"我新买的车{my_new_cat.get_descriptive_name()}")
9.2.2 给属性指定默认值
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.make} {self.model} {self.year}"
        return long_name.title()

my_new_cat = Car("宝马", "X3", "2022")

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
9.2.3 修改属性的值
  • 直接修改
my_new_cat.odometer_reading = 23

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
  • 通过方法修改
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

my_new_cat = Car("宝马", "X3", "2022")

my_new_cat.update_odometer(23)
my_new_cat.update_odometer(0)
print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
  • 通过方法对属性的值进行递增
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")


my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")
9.3 继承
  • 编写类时,并非总是要从空白开始。如果要编写的类是另一个现成类的 特殊版本,可使用继承。一个类继承另一个类时,将自动获得另一个类 的所有属性和方法。原有的类称为父类,而新类称为子类。子类继承了 父类的所有属性和方法,同时还可以定义自己的属性和方法。
9.3.1 子类的方法______init__()
  • 创建子类时,父类必须包含在当前文件中,且位于子类前面

  • 定义子类必须要在圆括号指定父类名称

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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法

my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")

my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
my_new_Electrocar.increment_odometer(300)
print(f"我新买的电动车{my_new_Electrocar.get_descriptive_name()},它的公里数为{my_new_Electrocar.odometer_reading}")
print(f"我已经开新车行驶{my_new_Electrocar.odometer_reading}公里了")
9.3.2 给子类定义属性和方法
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法
        """定义电动车自己的初始属性"""
        self.battery_size = 75

# 第一辆油车
my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")

# 第一辆电动车
my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
my_new_Electrocar.increment_odometer(300)

print(f"我新买的电动车{my_new_Electrocar.get_descriptive_name()},它的公里数为{my_new_Electrocar.odometer_reading},有{my_new_Electrocar.battery_size}KWH的电池")
print(f"我已经开新车行驶{my_new_Electrocar.odometer_reading}公里了")
9.3.3 重写父类的方法
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")

    def fill_gas_tank(self, litre):
        """油箱大小"""
        fuel_tank_size = litre
        return fuel_tank_size


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法
        """定义电动车自己的初始属性"""
        self.battery_size = 75

    def fill_gas_tank(self):
        """重写定义父类方法"""
        print("电车没有油箱")

# 第一辆油车
my_new_cat = Car("宝马", "X3", "2022")
my_new_cat.increment_odometer(200)

print(f"我新买的车{my_new_cat.get_descriptive_name()},它的公里数为{my_new_cat.odometer_reading},油箱大小为{my_new_cat.fill_gas_tank(70)}")
print(f"我已经开新车行驶{my_new_cat.odometer_reading}公里了")

# 第一辆电动车
my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
my_new_Electrocar.increment_odometer(300)

print(f"我新买的电动车{my_new_Electrocar.get_descriptive_name()},它的公里数为{my_new_Electrocar.odometer_reading},有{my_new_Electrocar.battery_size}KWH的电池")
print(f"我已经开新车行驶{my_new_Electrocar.odometer_reading}公里了")
my_new_Electrocar.fill_gas_tank()
9.3.4 将实例用作属性
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.make} {self.model} {self.year}"
        return long_name.title()

    def update_odometer(self, mileage):
        """修改车的默认里程表"""
        if mileage > self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("不能私自修改里程表!")

    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        if miles >= 0:
            self.odometer_reading = self.odometer_reading + miles
        else:
            print("禁止增加负数!")

    def fill_gas_tank(self, litre):
        """油箱大小"""
        fuel_tank_size = litre
        return fuel_tank_size


class Battery:
    """单独定义电动车的电池"""
    def __init__(self, battery_size=75):
        self.battery_size = battery_size

    def describe_battery(self):
        print(f"电动车的电池容量为{self.battery_size}")
        
    def get_range(self):
        if self.battery_size == 75:
            range = 260
        elif self.battery_size == 100:
            range = 315

        print(f"这辆车可以使用{range}公里")


class Electrocar(Car):                          # 定义子类Electrocar,继承父类Car
    """新能源汽车"""
    def __init__(self, make, model, year):
        # 初始化Car父类的基本属性
        super().__init__(make, model, year)     # super()是个特殊函数,让你能够调用父类方法
        """创建一个电池实体,并且附属给 self.battery 属性"""
        self.battery = Battery()

    def fill_gas_tank(self):
        """重写定义父类方法"""
        print("电车没有油箱")

my_new_Electrocar = Electrocar("小鹏", "P7", "2022")
# 电动车.电池.打印电池容量
my_new_Electrocar.battery.describe_battery()
# 获取公里数
my_new_Electrocar.battery.get_range()
my_new_Electrocar.battery.battery_size = 100
my_new_Electrocar.battery.get_range()
9.4 导入类
  • 导入单个类
from car import Car
  • 导入多个类
from car import Car, ElectricCar
  • 导入全部类
from car import *
  • 导入整个模块
import car
  • 使用别名
 from car import ElectricCar as EC
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960126.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号