目录
 
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 = 45my_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 = 75def 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 = 75def 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 |