python学习:重用父类功能的两种方式

在子类派生的新方法中如何重用父类的功能
方式一:指名道姓调用某一个类下的函数=》不依赖于继承关系

 class OldboyPeople:
     def __init__(self,name,age,sex):
         self.name=name
         self.age=age
         self.sex=sex

     def f1(self):
         print('%s say hello' %self.name)


 class Teacher(OldboyPeople):
     def __init__(self,name,age,sex,level,salary):
         OldboyPeople.__init__(self,name,age,sex)

         self.level = level
         self.salary=salary

 tea_obj=Teacher('egon',18,'male',10,3000)
 print(tea_obj.__dict__)

方式二:super()调用父类提供给自己的方法=》严格依赖继承关系

调用super()会得到一个特殊的对象,该对象会参照发起属性查找的那个类的mro,去当前类的父类中找属性
提示:在Python2中super的使用需要完整地写成super(自己的类名,self) ,而在python3中可以简写为super()。

 #Python学习交流群:711312441
 class OldboyPeople:
     def __init__(self,name,age,sex):
         self.name=name
         self.age=age
         self.sex=sex

     def f1(self):
         print('%s say hello' %self.name)


 class Teacher(OldboyPeople):
     def __init__(self,name,age,sex,level,salary):
         # super(Teacher,self).__init__(name,age,sex)
         super().__init__(name,age,sex) # 调用的是方法,自动传入对象

         self.level = level
         self.salary=salary

 # print(Teacher.mro())
 tea_obj=Teacher('egon',18,'male',10,3000)
 print(tea_obj.__dict__)

super()案例

class A:
    def test(self):
        print('from A')
        super().test()

class B:
    def test(self):
        print('from B')

class C(A,B):
    pass


obj=C()
obj.test()

print(C.mro())

这两种方式的区别是:

方式一是跟继承没有关系的,而方式二的super()是依赖于继承的,并且即使没有直接继承关系,super()仍然会按照MRO继续往后查找

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python学习:重用父类功能的两种方式 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Python实现搭建-简单服务器教程

    Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下:1.等待客户端的链接,服务器会收到一个http协议的请求数据报2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文件的环境)3.提取出文件的环境之后,利用截断取片的方法将文件名转化为模块名称4.使用m = __import__(),就可以得到返回值为m的模块5.创建一个env字典…

    python 2023年4月18日
    00
  • Python学习:获取代理ip以及使用

    python爬虫浏览器伪装 #导入urllib.request模块 import urllib.request #设置请求头 headers=(“User-Agent”,”Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22…

    Python开发 2023年4月2日
    00
  • Python爬虫学习:Cookie 和 Session 的区别是什么?

    一、 含义 Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份,怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携…

    Python开发 2023年4月2日
    00
  • Python学习:len() 函数详解:获取字符串长度或字节数、join()方法:合并字符串

    Python中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用len()函数。 语法格式: len(string) string 用于指定要进行长度统计的字符串 示例: a = ‘www.baidu.com’ print(len(a)) 输出 13 在 Python 中,不同的字符所占的字节数不同,数字、英文字母、小…

    Python开发 2023年4月2日
    00
  • 5个非常有意思的python代码,谁运行谁知道

    Python 能做很多无聊,但有意思的事情,例如接下来的一些案例。 Python 整蛊程序 以下程序,不要发代码,要不实现不了你整蛊的目的。 要打包成一个 exe 程序,发给朋友才有意思。 使用 pip install pyinstaller。 打包命令如下: pyinstaller -F 文件名.py 过程中如果出现 BUG(一般是编码错误),点击导航查看…

    Python开发 2023年4月2日
    00
  • Python教程:类的继承,什么是继承

    一、什么是继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 二、为什么用继承 使用继承可以减少代码的冗余 三、对象的继承 Python中支持一个类同时继承多个父类 class Parent1: pass class Parent2: pass class Sub1(Parent1,…

    Python开发 2023年3月31日
    00
  • python面向对象教程:类和实例

    面向对象简介 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数…

    Python开发 2023年4月2日
    00
  • Python学习:dict和set类型的用法

    1.什么是dict 我们已经知道,list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字: [‘Adam’, ‘Lisa’, ‘Bart’] 或者考试的成绩列表: [95, 85, 59] 但是,要根据名字找到对应的成绩,用两个 list 表示就不方便。 如果把名字和分数关联起来,组成类似的查找表: ‘Adam’ ==> 95 ‘Lisa…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部