首页 > 编程语言 >Python菱形继承(网易面试题)

Python菱形继承(网易面试题)

时间:2022-09-26 14:47:50浏览次数:63  
标签:__ 面试题 调用 name Python init 菱形 print super

菱形继承顾名思义,是一个菱形继承(好像是废话),直接上图

 

 菱形继承就是多继承,例上图所有,A是父类,B和C是A的子类,B和C是D的父类。

class Parent(object):
    def __init__(self, name):
        print('Parent开始被调用')
        self.name = name
        print('Parent结束被调用')
        

class Son1(Parent):
    def __init__(self, name, age, *args, **kwargs):
        print('Son1开始被调用')
        self.age = age
        super().__init__(name, *args, *kwargs)
        print('Son1结束被调用')


class Son2(Parent):
    def __init__(self, name, gender, *args, **kwargs):
        print('Son2开始被调用')
        self.gender = gender
        super().__init__(name, *args, **kwargs)
        print('Son2结束被调用')


class UserFroile(Son1, Son2):
    def __init__(self, name, age, gender):
        print('UserFroile开始被调用')
        super().__init__(name, age, gender)
        print('UserFroile结束被调用')


print(UserFroile.__mro__)

UF = UserFroile('wangchengyang', 21, '男')
print("姓名:", UF.name)
print("年龄:", UF.age)
print("性别:", UF.gender)

结果如下:

 

注意:在上面模块中,当在子类中通过super调用父类方法时,parent被执行了1次。

super调用过程:上面gs初始化时,先执行grandson中init方法, 其中的init有super调用,每执行到一次super时,都会从__mro__方法元组中顺序查找搜索。所以先调用son1的init方法,在son1中又有super调用,这个时候就就根据__mro__表去调用son2的init,然后在son2中又有super调用,这个就根据mro表又去调用parent中的init,直到调用object中的init. 所以上面的打印结果如此,要仔细分析执行过程。

 

标签:__,面试题,调用,name,Python,init,菱形,print,super
From: https://www.cnblogs.com/wangchengyang/p/16730895.html

相关文章

  • Python Web Django
    全文:https://www.cnblogs.com/MrFlySand/p/16730898.html1.6创建Django项目进入cmd窗口,输入如下命令,创建Django项目django-adminstartprojectDjango,如下是在code文......
  • 你需要知道的webpack高频面试题
    谈谈你对webpack的看法webpack是一个模块打包工具,可以使用它管理项目中的模块依赖,并编译输出模块所需的静态文件。它可以很好地管理、打包开发中所用到的HTML,CSS,JavaScr......
  • python显示图片
    python读取并显示图片的两种方法-邊城浪子-博客园(cnblogs.com)python读取并显示图片的两种方法在python中除了用opencv,也可以用matplotlib和PIL这两个......
  • 面向机器学习工程师的 Python 设计模式:Observer
    Photoby杰森梁on不飞溅面向机器学习工程师的Python设计模式:Observer了解如何通过采用设计模式来构建代码:基于Instagram的示例介绍模式描述了一个经常出现的......
  • python各个模块的作用
    一.OS模块:整理文件和目录os.popen()函数与cmd命令窗口之间建立一个双向通道,可以从cmd窗口和程序间相互读取信息  二。time 等待,获取时间为python的内置模块在Pyt......
  • Python 的 f 字符串的好处
    Python的f字符串的好处Photoby阿贝德·伊斯梅尔on不飞溅如果您是一名Python程序员,那么您可能已经熟悉格式化字符串的各种方法。从Python3.6开始,有一种新......
  • aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE
    网络上大家分享的aardio+Python混合开发的文章很多,不得不说aardio与Python混合开发是真的简单!▶ 快速入门推荐几个快速上手教程:《aardio+Python开发桌面软......
  • python命令行解析
    getoptimportgetopt,sysopts,args=getopt.getopt(sys.argv[1:],'-o:-s:-u:-a:')-o:-s:-u:-a:表示使用这个参数必须要传递实参,如-o9;但是不使用这个参数就不用传......
  • 2022新鲜的阿里外包产品经理面试题
    虎哥寄语面试,就是一场博弈,你要在一定的时间内高效的证明你的能力,符合这个岗位需求、符合这个薪资需求、符合面试官个人需求。深度思考一下,对应问题要如何答复,才能既符合自......
  • Python工具箱系列(七)
    上期描述了如何在ubuntu18.04下安装python3.8,本期将描述:·BIOS开启CPU的虚拟化支持·如何在windows10/11下安装wsl/wslg·如何在有wsl/wslg的情况下安装ubuntu18.04......