7.11类
类
一:创建和使用类
1.创建 Dog 类
class Dog:def __init__(self,name,age): # 前后是两个下划线## 初始化属性 name 和 ageself.name=nameself.age=agedef sit(self):## 模拟小狗收到命令时坐下print(f'{self.name} is now sitting')def roll_over(self):## 模拟小狗收到命令时打滚print(f'{self.name} rolled over!')
1.1 init() 方法
2.根据类创建实例
class Dog:def __init__(self,name,age):## 初始化属性 name 和 ageself.name=nameself.age=agedef sit(self):## 模拟小狗收到命令时坐下print(f'{self.name} is now sitting')def roll_over(self):## 模拟小狗收到命令时打滚print(f'{self.name} rolled over!')my_dog=Dog('haha',6)
print(f'My dog\'s name is {my_dog.name}')
print(f'My dog is {my_dog.age} years old.')
My dog's name is haha
My dog is 6 years old.
2.1 访问属性
2.2调用方法
my_dog=Dog('haha',6)
my_dog.sit()
my_dog.roll_over()
haha is now sitting
haha rolled over!
3.创建多个实例
my_dog=Dog('haha',6)
your_dog=Dog('heihei',3)print(f'My dog\'s name is {my_dog.name}')
print(f'My dog is {my_dog.age} years old.')
my_dog.sit()print(f'\nYour dog\'s name is {your_dog.name}')
print(f'Your dog is {your_dog.age} years old.')
your_dog.sit()
My dog's name is haha
My dog is 6 years old.
haha is now sittingYour dog's name is heihei
Your dog is 3 years old.
heihei is now sitting
二:使用类和实例
1.Car 类
class Car:def __init__(self,make,model,year):## 初始化描述汽车的属性self.make=makeself.model=modelself.year=yeardef get_des_name(self):## 返回格式规范的描述性信息long_name=f'{self.year} {self.make} {self.model}'return long_namemy_car = Car('audi', 'a4', 2024)
print(my_car.get_des_name())
2024 audi a4
2.给属性指定默认值
class Car:def __init__(self,make,model,year):## 初始化描述汽车的属性self.make=makeself.model=modelself.year=yearself.odometer_reading = 0 ## 给属性指定默认值def get_des_name(self):## 返回格式规范的描述性信息long_name=f'{self.year} {self.make} {self.model}'return long_namedef read_od(self):## 打印一条指出汽车行驶里程的消息print(f'This car has {self.odometer_reading} miles on it.') ## 必须加上selfmy_car = Car('audi', 'a4', 2024)
print(my_car.get_des_name())
my_car.read_od()
2024 audi a4
This car has 0 miles on it.
3.修改属性的值
3.1直接通过实例修改
3.2通过方法设置
3.3通过方法递增(增加特定的值)
3.1直接通过实例修
my_car = Car('audi', 'a4', 2024)
print(my_car.get_des_name())# 通过实例修改属性的值
my_car.odometer_reading = 23
my_car.read_od()
2024 audi a4
This car has 23 miles on it.
3.2通过方法设置
class Car:def __init__(self,make,model,year):## 初始化描述汽车的属性self.make=makeself.model=modelself.year=yearself.odometer_reading = 0 ## 给属性指定默认值def get_des_name(self):## 返回格式规范的描述性信息long_name=f'{self.year} {self.make} {self.model}'return long_namedef read_od(self):## 打印一条指出汽车行驶里程的消息print(f'This car has {self.odometer_reading} miles on it.') ## 必须加上selfdef revise_od(self,odometer_reading):## 将里程表读数设置为指定的值self.odometer_reading=odometer_readingmy_car = Car('audi', 'a4', 2024)
print(my_car.get_des_name())## 通过方法设置属性的值
my_car.revise_od(66)
my_car.read_od()
2024 audi a4
This car has 66 miles on it.
3.3通过方法递增(增加特定的值)
class Car:def __init__(self,make,model,year):## 初始化描述汽车的属性self.make=makeself.model=modelself.year=yearself.odometer_reading = 0 ## 给属性指定默认值def get_des_name(self):## 返回格式规范的描述性信息long_name=f'{self.year} {self.make} {self.model}'return long_namedef read_od(self):## 打印一条指出汽车行驶里程的消息print(f'This car has {self.odometer_reading} miles on it.') ## 必须加上selfdef revise_od(self,mile):## 将里程表读数设置为指定的值#self.odometer_reading=odometer_readingif mile >= self.odometer_reading:self.odometer_reading=mileelse:print('You can\'t roll back an odometer!')def incre_od(self,mile):## 让里程表读数增加指定的量self.odometer_reading += milemy_car = Car('audi', 'a4', 2024)
print(my_car.get_des_name())## 通过方法设置属性的值
my_car.incre_od(55)
my_car.read_od()
2024 audi a4
This car has 55 miles on it.
三:继承
1.子类的 init() 方法
## 父类class Car:def __init__(self,make,model,year):## 初始化描述汽车的属性self.make=makeself.model=modelself.year=yearself.odometer_reading = 0 ## 给属性指定默认值def get_des_name(self):## 返回格式规范的描述性信息long_name=f'{self.year} {self.make} {self.model}'return long_namedef read_od(self):## 打印一条指出汽车行驶里程的消息print(f'This car has {self.odometer_reading} miles on it.') ## 必须加上selfdef revise_od(self,mile):## 将里程表读数设置为指定的值#self.odometer_reading=odometer_readingif mile >= self.odometer_reading:self.odometer_reading=mileelse:print('You can\'t roll back an odometer!')def incre_od(self,mile):## 让里程表读数增加指定的量self.odometer_reading += mile## 子类class Elecar(Car): ## 继承Cardef __init__(self,make,model,year):## 初始化父类的属性super().__init__(make,model,year)## 实例化子类
my_elcar=Elecar('heihi','biyadi',2024)
print(my_elcar.get_des_name())
2024 heihi biyadi
2.给子类定义属性和方法
class Elecar(Car): ## 继承Cardef __init__(self,make,model,year):## 初始化父类的属性super().__init__(make,model,year)## 初始化电动汽车特有的属性self.battery_size = 40def des_battery(self):## 打印一条描述电池容量的消息print(f'This car has a {self.battery_size}-kWh battery.')my_elcar=Elecar('heihi','biyadi',2024)
print(my_elcar.get_des_name())
my_elcar.des_battery()
2024 heihi biyadi
This car has a 40-kWh battery.
3.重写父类中的方法
4.将实例用作属性
# Battery 的类class Battery:def __init__(self,battery_size=40):## 初始化电池的属性self.battery_size=battery_sizedef des_battery(self):## 打印一条描述电池容量的消息print(f'This car has a {self.battery_size}-kWh battery.')def get_range(self):if self.battery_size == 40:range=150elif self.battery_size==65:range=225print(f'This car can go about {range} miles on a full charge.')class Elecar(Car): ## 继承Cardef __init__(self,make,model,year):## 初始化父类的属性super().__init__(make,model,year)## 初始化电动汽车特有的属性self.battery = Battery()my_elcar=Elecar('heihi','biyadi',2024)
print(my_elcar.get_des_name())
my_elcar.battery.des_battery() ##
my_elcar.battery.get_range()
2024 heihi biyadi
This car has a 40-kWh battery.
This car can go about 150 miles on a full charge.