• 面向对象的继承


    子类能继承父类的属性和方法,若子类没有,则去父类中调用

     1 class People:
     2     def __init__(self,name,age,general):
     3         self.name=name
     4         self.age=age
     5         self.general=general
     6 
     7     def zhuanqian(self,money):
     8         print('努力工作赚钱%s'%money)
     9 class Student(People):
    10     '学生类继承于人类'
    11     pass
    12 
    13 # print(People.__dict__)
    14 # print(Student.__dict__)
    15 s1=Student('xiaolong',21,'man')
    16 print(s1.general)
    17 s1.zhuanqian(999)

     通常更常用一些的方法是接口继承,它在父类中定义好子类继承必须具备的函数,但不会提供函数的具体实现,由子类继承后来具体实现,Python可以有多个父类继承,但Java或者C#只能有一个。

     1 import abc
     2 class About(metaclass=abc.ABCMeta):
     3     @abc.abstractmethod 
     4     def read(self):
     5         pass
     6 
     7     @abc.abstractmethod
     8     def write(self):
     9         pass
    10 
    11 class Disk(About):
    12     def read(self):
    13         print('disk read')
    14     def write(self):
    15         print('disk write')
    16 
    17 class Cd(About):
    18     def read(self):
    19         print('cd read')
    20     def write(self):
    21         print('cd write')
    22 
    23 
    24 d1=Disk()
    25 d1.read()
    26 d1.write()

     对父类的字段属性进行调用,同时衍生出子类特有的字段属性,可以直接在子类初始化字段属性时,直接父类调用初始化属性(子类self的init方法一定得包含父类的属性)

     1 class Vehicle:
     2     '这是一个交通工具类'
     3     def __init__(self,name,speed,price,many):
     4         self.name=name
     5         self.speed=speed
     6         self.price=price
     7         self.many=many
     8 
     9     def run(self):
    10        print('****************%s准备发车了,速度是%s' % (self.name, self.speed))
    11 
    12 class Bus(Vehicle):
    13     '这是一个公汽 子类'
    14     def __init__(self,name,speed,price,many,num,addres):
    15         # Vehicle.__init__(self,name,speed,price,many)
    super().__init__(name,speed,price,many)
    16 self.num=num 17 self.addres=addres 18 19 def run(self): 20 print('%s第%s线启动了,请%s的旅客做好准备!'%(self.name,self.num,self.addres)) 21 # Vehicle.run(self) 22 super().run() 换成super后可自动匹配父类 并且无需再传入self 灵活度高 23 24 b1=Bus('复兴号','200km/h',125,2000,'007号','南京') 25 b1.run()

     子类在调用函数的时候优先调用自己的方法,然后再调用父类的函数方法

    用super方法后,以后父类若变更类名,依旧可以正常使用

     

  • 相关阅读:
    Linux 开发之线程条件锁那些事
    Linux 开发之线程条件锁那些事
    Linux 开发之线程条件锁那些事
    洛谷3919:可持久化数组——题解
    洛谷3919:可持久化数组——题解
    洛谷3919:可持久化数组——题解
    洛谷3919:可持久化数组——题解
    长篇干货|以太坊智能合约 —— 最佳安全开发指南(附代码)
    长篇干货|以太坊智能合约 —— 最佳安全开发指南(附代码)
    长篇干货|以太坊智能合约 —— 最佳安全开发指南(附代码)
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9236891.html
Copyright © 2020-2023  润新知