0
点赞
收藏
分享

微信扫一扫

python面向对象01-继承和多态

生态人 2022-01-04 阅读 72

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路公交车正在行驶

类的继承,调用父类的属性和方法

举报

相关推荐

0 条评论