0
点赞
收藏
分享

微信扫一扫

python笔记基础--类(6)

_阿瑶 03-24 11:30 阅读 2

目录

1.创建和使用类

1.1根据类创建实例

2.使用类和实例

3.继承

3.1子类的继承方法__init__()

3.2给子类定义属性和方法

3.3重写父类方法

3.4将实例用例作属性

4.导入类


实例化:根据类创建对象

1.创建和使用类

创建Dog类,每个实例都存储名字和年龄,赋予了小狗蹲下(sit())和打滚(roll_over())能力

class Dog:
    def __init__(self,name,age):
        """初始化属性name,age"""
        self.name = name
        self.age = age
    def sit(self):
        """模拟小狗收到命令蹲下"""
        print(f"{self.name} is now sitting.")
    def roll_over(self):
        """模拟小狗收到命令打滚"""
        print(f"{self.name} rolled over!")

方法:__init__()这类的函数称为方法。

创建新实例的时候,python会自动运行它

__init__(self)self一定要有,自动传递

self.name = name获取与形参name相关联的值,并将其赋值给变量name,然后该变量被关联到当前创建的实例。

1.1根据类创建实例

class Dog:……
my_dog = Dog('Dylan',7)
print(f"My dog name:{my_dog.name},age:{my_dog.age}.")

My dog name:Dylan,age:7.

访问属性

访问my_dog的name属性:my_dog.name

调用方法

my_dog.sit()
my_dog.roll_over()

Dylan is now sitting.

Dylan rolled over!

创建多个实例

my_dog = Dog('Dylan',7)
your_dog = Dog('Ann',6)

2.使用类和实例

创建Car类,存储有关汽车的信息,汇总这些信息

class Car:
    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
    def get_d_name(self):
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()
my_car = Car('audi','a4','2024') #顺序不能变
print(my_car.get_d_name())

2024 Audi A4

给属性

指定默认值

class Car:
    def __init__(self,make,model,year):
        ……
        self.odo_reading = 0
    def read_odo(self):
        print(f"miles:{self.odo_reading}")


my_car = Car('audi','a4','2024')
my_car.read_odo()

2024 Audi A4

miles:0

修改属性值

1.直接修改

my_car.odo_reading = 45
my_car.read_odo()

miles:45

2.通过方法修改

def updata_od(self,mileage):

#将里程数设置为指定值
    self.odo_reading=mileage

 

my_car.updata_odo(34)
my_car.read_odo()

miles:34

def updata_od(self,mileage):
    # 将里程数设置为指定值
    # 禁止将里程表读数往回调
    if mileage >= self.odometer_reading:
        self.odometer_reading = mileage
    else:
        print("You can't roll back an odometer.")

3.通过方法对属性的值进行递增

def increment_odo(self, miles):
    # 将里程数增加指定量
    self.odometer_reading += miles

my_car.updata_odo(34_500)
my_car.read_odo()

my_car.increment_odo(100_000)
my_car.read_odo()

miles:34500

miles:134500

3.继承

如果要编写的类是另一个现实类的特殊版本,可使用继承。

一个类继承另一个类时,将自动获取另一个类的所有属性和方法。

父类:原有类

子类:新类

3.1子类的继承方法__init__()

class FlectricCar(Car):
    #电动汽车的独特之处
    def __init__(self,make,model,year):
        super().__init__(make,model,year) #初始化父类的属性

my_byd = FlectricCar('byd','plus',2024)
print(my_byd.get_d_name())

3.2给子类定义属性和方法

一个类继承另一个类后,可以添加区分子类和父类所需的新属性、新方法。

class FlectricCar(Car):
    #电动汽车的独特之处
    def __init__(self,make,model,year):
        super().__init__(make,model,year)            

self.battery_size = 75
    def describe_battery(self):
        """打印电瓶容量的消息"""
        print(f"Car battert:{self.battery_size}-kWh")

my_byd.describe_battery()

Car battert:75-kWh

3.3重写父类方法

只要不符合子类模拟的实物的行为,都可以重写。

如果用电动车的方式调动fill_gas_tank(),

会忽略Car中的方法fill_gas_tank()

运行右侧代码

class FlectricCar(Car):……

def fill_gas_tank(self):
         print(f"Car doesn't need a gas rank.")

3.4将实例用例作属性

当类属性和方法清单太长的时候,可以将类的一部分提取出来,作为一个独立的类。

将大型类拆分成多个协同工作的小类。

原来

拆分后

class FlectricCar(Car):
    #电动汽车的独特之处
    def __init__(self,make,model,year):
        super().__init__(make,model,year)            

self.battery_size = 75
    def describe_battery(self):
        """打印电瓶容量的消息"""
        print(f"{self.battery_size}-kWh")

my_byd.describe_battery()

class Battery:
    def __init__(self,battery_size=75):
        self.battery_size = battery_size
    def des_battery(self):
        print(f"{self.battery_size}-kWh")


class FlectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)

        self.battery = Battery()

print(my_byd.get_d_name())
my_byd.battery.des_battery()

4.导入类

car.py

class Car: ……

class ElectricCar(Car):……

my_car.py调用car.py

from car import Car

导入ElectricCar

from car import ElectricCar

导入模块中所有类

from car import *

使用别名as

from car import ElectricCar as EC

举报

相关推荐

0 条评论