Python super初始化理解过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python super初始化理解过程相关的知识,希望对你有一定的参考价值。

# -*- coding:utf-8 -*-<br data-filtered="filtered">
class A(object):
    def __init__(self, xing, gender):          # !#1
        self.namea = "aaa"                     # !#2
        self.xing = xing                       # !#3
        self.gender = gender                   # !#4
        self.funca()

    def funca(self):
        print("function a : %s" % self.namea)


class B(A):
    def __init__(self, xing, age):             # !#5
        super(B, self).__init__(xing, age)     # !#6(age处应为gender)
        self.nameb = "bbb"                     # !#7
        ##self.namea="ccc"                     # !#8
        ##self.xing = xing.upper()             # !#9
        self.age = age                         # !#10

    def funcb(self):
        print("function b : %s" % self.nameb)

    def funca(self):
        print("(override)function a : %s" % self.namea)


b = B("lin", 22)                               # !#11
print(b.nameb)
print(b.namea)
print(b.xing)                                  # !#12
print(b.age)
print(b.gender)                                # !#13
b.funcb()
b.funca()

  上面程序的输出结果为:

(override)function a : aaa
bbb
aaa
lin
22
22
function b : bbb
(override)function a : aaa

  以上程序说明如果父类初始化方法中有调用了父类中定义的方法,恰好这个方法又被子类所覆盖,则super(B, self).__init__(xing, age)调用的父类初始化方法中调用的方法将是被覆盖后的方法。

以上是关于Python super初始化理解过程的主要内容,如果未能解决你的问题,请参考以下文章

片段中的 super.onCreateView

转python 调用super()初始化报错“TypeError: super() takes at least 1 argument”

Java中super关键字的作用与用法

不立即分离片段

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数