python面向对象01
- 类和对象
- 继承
- 多态
类和对象
封装:将属性和方法封装到一个抽象的类中
题01:使用python,选择小汽车和客车为对象,使用类实现它们的属性和方
法(汽车的重量属性,驾驶的方法),并打印属性
小汽车
#小汽车
class Car:
def __init__(self,name,height): #常用于属性,self为已实例化的对象
self.name= name #属性 名字
self.height= height #重量
#方法
def func(self):
return "重量为"+str(self.height)+"kg的"+self.name+"在行驶" #python函数使用return返回值,如果不用return, 而用print输出值,这个函数默认还有一个返回值为None
客车
#客
class Pass_car:
def __init__(self,name,height): #常用于属性,self为已实例化的对象
self.name= name #属性 名字
self.height= height #重量
#方法
def func(self):
return "重量为"+str(self.height)+"kg的"+self.name+"在行驶"
测试
#导入
from car import Car #面向对象01为python文件名,car为类名
from pass_car import Pass_car
def main():
car = Car("小汽车", 100) # 创建对象并传入参数
pcar = Pass_car("客车", 500)
print(car.height) #打印小汽车的属性
print(pcar.height) #打印客车的属性
print(car.func()) #打印小汽车的方法
print(pcar.func()) #打印客车的方法
if __name__ == "__main__":
main()
运行结果:
100
500
重量为100kg的小汽车在行驶
重量为500kg的客车在行驶
继承
语法:
class 类名(父类名):
pass
实现代码的重用
题02:对第一个问题改写:继承客车的属性和方法,改造为公交车,输入的
名字为:“东风路28路公交车”,并打印(也包括属性和驾驶的方法)
#继承 子类拥有父类的所有属性和方法
from pass_car import Pass_car
#子类
class Bus(Pass_car): #继承Pass_car
#继承客车的属性
def __init__(self,name, height,bname): #子类重写父类,调用自身的属性和方法
super().__init__(name,height) #调用父类的 __init__ 方法
self.bname=bname
def run(self): #子类方法
return f'我是子类'
if __name__ == "__main__":
bname = input("请输入公交车名:")
bus = Bus("客车", "100", bname)
# bus = Bus()
print(bus.height) # 父类的属性
print(bus.bname) # 子类的属性
print(bus.func()) # 子类继承父类的方法
print(bus.run()) # 子类独有的方法
运行结果:
请输入公交车名:东风路28路公交车
100
东风路28路公交车
重量为100kg的客车在行驶
我是子类
多态
多态:不同的子类对象调用相同的父类方法,产生不同的执行结果
多态的实现需要继承和重写
题03:使用多态实现28路、906路、B32路公交车的驾驶方法并打印
#多态
from pass_car import Pass_car
class bus(Pass_car): #继承父类Pass_car
def __init__(self, name,height): #属性
super().__init__(name, height) #调用父类的 __init__ 方法
self.name = name
def func(self): #方法重写
return self.name+"正在行驶"
class bus1(Pass_car): #继承父类Pass_car
def __init__(self, name,height):
super().__init__(name, height)
self.name = name
def func(self): #方法重写
return self.name+"正在行驶"
class bus2(Pass_car): #继承父类Pass_car
def __init__(self, name,height):
super().__init__(name, height)
self.name = name
def func(self): #方法重写
return self.name+"正在行驶"
if __name__ == "__main__":
bus = bus("28路公交车", 500) # 创建对象并传入参数
print(bus.func()) # 输出方法中的内容
bus1 = bus1("906路公交车", 500)
print(bus1.func())
bus2 = bus2("B32路公交车", 500)
print(bus2.func())
运行结果:
28路公交车正在行驶
906路公交车正在行驶
B32路公交车正在行驶
类的继承,调用父类的属性和方法