美文网首页
python_理解篇_理解类继承

python_理解篇_理解类继承

作者: 金鱼座 | 来源:发表于2019-11-12 11:37 被阅读0次

大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油!

类继承可以说是所有面向对象语言的一个最重要组成部分,python当然不可能缺少这样的重要内容

那么为什么我会将类继承单独拿出来说呢, 主要是给自己再一次加深理解,作为一个职业非主力开发的测试来说,我们很多时候对于语言的理解都是浮于表面,只要稍微进行一些变种,就会一头雾水,我也希望跟我有一样感觉的人,能够通过我写的这个加深理解

先说下对于普通的一个类定义是这样的:

class A():
    def __init__(self, a):
        self.a = a
   pass

再说下我遇到的几种情况
1. 继承父类时, 子类没有init初始化

class C(A):
    pass

此时声明一个C = C()时,会报错

image.png

原因是继承A后, A初始化有个a参数, 此时需要定义c = C(3)

结论:子类不重写 init,实例化子类时,会自动调用父类定义的 init

2. 继承父类时, 子类有自己独立的初始化init

class B(A):
    def __init__(self, b):
        self.b = b
    pass

此时声明:b = B(2)时, 2会自动赋值给b,可以通过b.b来进行输出

注意:此时如果引用b.a 时会报错 image.png

子类不需要自动调用父类的方法:子类重写init()方法,实例化子类后,将不会自动调用父类的init()的方法。

3. 继承父类时,需要继承父类的初始化init也有自己的init

class B(A):
    def __init__(self, b):
         A.__init__(self, 2)
        super(B, self).__init__(2)
        self.b = b
    pass

上述的两种super和A的链式引用都可以
此时声明:b = B(1)时, b.b = 1, b.a = 2

结论 如果重写了init 时,要继承父类的构造方法,可以使用 super(子类,self).init(参数1,参数2,....), 或者 父类名称.init(self,参数1,参数2,...)

通过上面的三种情况, 我们可以看出, python的继承并不能直接引用父类的初始化参数,必须通过一定的处理,才能做到成功引用

相关文章

  • python_理解篇_理解类继承

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! 类...

  • python_理解篇_钩子方法的理解

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! 钩...

  • python_理解篇_闭包咋理解?

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! 前...

  • 简易方式理解的C++中public,private和protec

    其实理解这三个用法非常简单,很多博客讲的太麻烦,其实有很简单的理解方式 继承概念:派生类继承基础类(基类)的特点,...

  • C#基础

    c#语法特性 类(class)理解类(一)包含变量(属性)包含方法(行为)继承用来创建对象理解类(二)核心是建模面...

  • Swift语法2

    目录 继承 继承我们可以理解为一个类获取了另外一个类的方法和属性。当一个类继承其它类时,继承类叫子类,被继承类叫超...

  • 6 面向对象的程序设计

    本章内容 理解对象属性 理解并创建对象 理解继承 面向对象语言有一个标志,那就是它们都有类的概念,而通过类可以创建...

  • JavaSE基础

    面向对象都有哪些特性以及你对这些特性的理解 一.继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被...

  • Swift:基础(二十三)继承

    Swift 继承 继承我们可以理解为一个类获取了另外一个类的方法和属性。 当一个类继承其它类时,继承类叫子类,被继...

  • 继承

    继承我们可以理解为一个类获取了另外一个类的方法和属性。当一个类继承其它类时,继承类叫子类,被继承类叫超类(或父类)...

网友评论

      本文标题:python_理解篇_理解类继承

      本文链接:https://www.haomeiwen.com/subject/usjfictx.html