您的当前位置:首页正文

python中super的使用注意

2024-08-01 来源:化拓教育网

1、super()只能用于新式类中

所谓新式类,旧类的,关键就是看是不是有基类,有基类的就是形式类,比如class A(object),所以class A()自然就是旧式类了。

# 单继承
class A(object):
 
    def __init__(self, a, b):
        self.a = a
        self.b = b
 
    def sayHello(self):
        print('this is class A, a={},b={}'.format(self.a, self.b))
 
class B(A):
 
    def __init__(self, a, b, c):
        super(B, self).__init__(a,b)
        self.c = c
 
    def sayHello(self):
        super(B, self).sayHello()
        print('this is b call')
 
b = B('b','also b','test')
b.sayHello()
# this is class A, a=b,b=also b
# this is b call

2、super 其实和父类没有实质性的关联

多重继承下,super就没有那么简单了。

# 多重继承
 
class Base(object):
    def __init__(self):
        print('enter Base')
        print('out Base')
class A(Base):
    def __init__(self):
        print('enter A')
        super(A, self).__init__()
        print('out A')
class B(Base):
    def __init__(self):
        print('enter B')
        super(B, self).__init__()
        print('out B')
class C(A, B):
    def __init__(self):
        print('enter C')
        super(C, self).__init__()
        print('out C')
 
c = C()
#enter C
#enter A
#enter B
#enter Base
#out Base
#out B
#out A
#out C

以上就是python中super的使用注意,希望能对大家有所帮助。更多Python学习指路:

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

化拓教育网还为您提供以下相关内容希望对您有帮助:

在python中,可以通过super()函数调用父类的方法。

在子类中,如果我们需要调用父类的某个方法,可以在子类的方法内部使用super.method_name的形式来调用。这里的method_name是父类中你想要调用的方法的名称。这样,当我们调用子类中的这个方法时,实际上也会执行父类中对应的方法。示例说明:假设有一个父类Animal和一个子类Dog。在Animal类中定义了一个...

Python中super()详解及应用场景举例

在restfremework中,super也有广泛应用,比如重写Response信息,除了使用Django的中间件,还可以通过super的dispatch方法来实现。以上内容是关于super的简要介绍,更多详情请关注个人公众号【曲鸟讲测试开发】,那里有更多相关推荐文章,如"从不建议为了就业盲目学习Python"。

python的super函数详解

super函数的基本工作原理是返回一个代理对象,它会根据给定的参数调用父类或兄弟类的方法。函数有两个可选参数:type(类)和object-or-type(通常是self,代表对象)。第二个参数决定了调用父类的顺序,通常使用self的__mro__属性。第一个参数决定了调用方法的起点,通常可以设置为自身类以向下查找。...

想了解Python中的super 函数么

例如,当你在多继承中使用super(类, self),实际上是在指定一个检索起点,它会从该类开始向上查找直到找到匹配的方法。如果没有找到,就会按照__mro__的顺序继续查找,直到找到或引发错误。通过理解并灵活运用super(),你可以更好地管理类的继承和方法调用。

python中的super是什么?-

首先我们注意到,父类 initial 中的 __init__ 函数内的打印语句,是在super之后才输出的,这说明了, super 函数是在执行父类的初始化操作。那么如果没有执行 super , new 子类对 initial 父类的继承体现在哪里呢?答案就是父类的成员函数,比如这样的一个案例:其实就是删掉了...

python语言中继承关系中的覆盖和重写时需要注意什么问题?

在Python语言中进行继承时,子类可以覆盖和重写父类的属性和方法。以下是覆盖和重写时需要注意的问题:1. 覆盖:子类可以完全覆盖父类的属性和方法,但是需要注意,如果子类覆盖了父类的方法,调用该方法时将只会调用子类的方法。因此,需要谨慎使用覆盖。可以使用`super()`方法在子类中调用父类方法。2....

Python中的__init__和super()

例如,创建car子类时,如果Manager继承自Employee和Customer,需要重写__init__并调用父类方法以确保完整初始化。使用super().__init__()在子类构造函数中,可以继承父类的初始化行为。在实际例子中,通过三个子类(Puple、Puple_Init和Puple_Super)展示,子类在覆盖初始化方法时,是否调用super()对属性...

Python中的super函数有什么用,怎么用 ?图片中的super中后面的参数代表啥...

super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。你这里面super(SongBird,self)....

使用python的super时出现的TypeError: must be type, not classobj 原 ...

查找资料之后发现,python中super只能应用于新类,而不能应用于经典类 所谓新类 : 就是所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。下面是一个新类的例子 所谓经典类 : 就是什么都不用继承的类,例如:产上上面的问题,而自己又不知道父类该继承什么,最简单的方法就是让它...

python的类和对象中的super函数的问题

super方法在多重继承程序中的调用顺序,采用的是C3算法(在python3中)。C3算法的规则如下 ①.从底层开始,选择入边为零的点。②.从左到右。③深度探索。但受限于②规则。每一个类都可以用mro函数查看自己的继承顺序(MRO全称Method Resolution Order,就是用来定义继承方法的调用顺序)对于你的程序 分析 ...