python进阶(6)--类
文档目录:
---------------------------------------分割线:正文--------------------------------------------------------
1、类由类名(首字母大写)、类的实例、类的方法组成
2、举例创建类
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")
my_dog=Dog('xiaobai',12)
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 xiaobai.
My dog is 12 years old
my_dog=Dog('xiaobai',12)
2、使用方法(使用Dog类)
my_dog.sit()
my_dog.roll_over()
3、给属性指定默认值(使用Car类)
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.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
"""打印汽车的里程"""
print(f"This car has {self.odometer_reading} miles on it.")
my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
查看结果:
2019 Audi A4
This car has 0 miles on it.
4、修改属性的值(使用Car类)
my_new_car.odometer_reading=3000
my_new_car.read_odometer()
查看结果:
This car has 3000 miles on it.
5、通过方法修改属性的值(使用Car类)
#新增修改里程数的方法
def update_odometer(self,mileage):
"""将里程表读数设置为指定值"""
self.odometer_reading=mileage
查看实例并调用方法
my_new_car=Car('audi','a4',2019)
my_new_car.update_odometer(50)
my_new_car.read_odometer()
查看结果:
This car has 50 miles on it.
1、子类的init()方法
from test06_class_car import Car
#ElectricCar继承Car
class ElectricCar(Car):
"""电动汽车"""
def __init__(self,make,model,year):
"""初始化父类方法"""
super().__init__(make,model,year)
#创建ElecticCar实例,赋给变量my_tesla
my_tesla=ElectricCar('tesla','model s',2020)
print(my_tesla.get_descriptive_name())
查看结果:
2020 Tesla Model S
2、子类定义属性的方法(使用ElectricCar类)
from test06_class_car import Car
class ElectricCar(Car):
"""电动汽车"""
def __init__(self,make,model,year):
"""初始化父类方法"""
super().__init__(make,model,year)
#设置电瓶容量初始值
self.battery_size=75
#新增方法
def describe_battery(self):
"""打印电瓶容量信息"""
print(f"This car has a {self.battery_size} -kwh battery.")
#创建ElecticCar实例,赋给变量my_tesla
my_tesla=ElectricCar('tesla','model s',2020)
my_tesla.describe_battery();
查看结果:
This car has a 75 -kwh battery.
3、重写父类的方法
#Car类新增方法:油箱
def fill_gas_tank(self):
print("This car needs a gas tank!")
在子类中重新父类的方法,python会执行子类的方法,忽略父类的
#重写父类方法
def fill_gas_tank(self):
"""电动车没有油箱"""
print("This car doesn't need a gas tank!")
实例化并调用重写的方法
my_tesla=ElectricCar('tesla','model s',2020)
my_tesla.fill_gas_tank()
查看结果:
This car doesn't need a gas tank!
4、将实例用作属性
from test06_class_car import Car
class ElectricCar(Car):
"""电动汽车"""
def __init__(self,make,model,year):
"""初始化父类方法"""
super().__init__(make,model,year)
#设置电瓶容量初始值
self.battery=Battery()
class Battery:
"""电动汽车电瓶的信息"""
def __init__(self,battery_size=75):
"""初始化电瓶的属性"""
self.battery_size=battery_size
def describe_battery(self):
"""打印电瓶容量信息"""
print(f"This car has a {self.battery_size} -kwh battery.")
def get_range(self):
"""打印电瓶的续航里程"""
if self.battery_size==75:
range=260
elif self.battery_size==100:
range=315
print(f"This car can go about {range} miles on a full charge")
#创建ElecticCar实例,赋给变量my_tesla
my_tesla=ElectricCar('tesla','model s',2020)
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
查看结果:
This car has a 75 -kwh battery.
This car can go about 260 miles on a full charge
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了