super方法

摘要:
super方法用于查找mro顺序中当前类的下一个类。在py3中,它不需要传递参数。它会自动帮助我们在mro顺序中当前类的下一个类中找到同名的方法。在py2中的新类中,我们需要主动传递参数super(子类的名称,子类的对象)。函数名()可以帮助我们按照这个子类的mro顺序调用下一个类中的方法。在py2的经典类中,它不支持使用super查找下一个类。在D类中,它可以写成super

super方法

super是按照mro顺序来寻找当前类的下一个类

在py3中不需要传参数,自动就帮我们寻找当前类的mro顺序的下一个类中的同名方法

在py2中的新式类中,需要我们主动传递参数super(子类的名字,子类的对象).函数名()

这样才能够帮我们调用到这个子类的mro顺序的下一个类中的方法

在py2的经典类中,并不支持使用super来找下一个类

在D类中找super的func,那么可以这样写 super().func()

也可以这样写 super(D,self).func() (并且在py2的新式类中必须这样写)

class A:
    def func(self):
        print('A')

class B(A):
    def func(self):
        super().func()
        print('B')

class C(A):
    def func(self):
        super().func()
        print('C')

class D(B,C):
    def func(self):
        super().func()
        print('D')
# print(D.mro())
#[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
d =D()
print(d.func())
#A
#C
#B
#D
# 在单继承的程序中,super就是找父类
class User:
    def __init__(self,name):
        self.name = name
class VIPUser(User):
    def __init__(self,name,level,strat_date,end_date):
        # User.__init__(self,name)
                   # 推荐的
        super(VIPUser,self).__init__(name)
        self.level = level
        self.strat_date = strat_date
        self.end_date = end_date

taibai = VIPUser('太白',6,'2019-01-01','2020-01-01')
print(taibai.__dict__)
#{'name': '太白', 'level': 6, 'strat_date': '2019-01-01', 'end_date': '2020-01-01'}

免责声明:文章转载自《super方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# 获取utc时间,以及utc datetime 互相转化使用windbg检测内存泄漏下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一个div有多个class,如何通过xpath获取?

 想要获取所有class=film-col的div 元素 @SuppressWarnings("unchecked")List<HtmlDivision> divs= (List<HtmlDivision>)page.getByXPath("//div[contains(@class, 'film-col')]");...

一个非常好的滑动门代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">...

无源码情况下直接修改jar里内容思路

当我们反编译的jar包里class被混淆过,这时反编译出来的java文件会有各种奇葩的问题,不能直接用,比如某框架需要注册码,这个时候我们只能通过层层反编译将验证码相关的部分绕过,如果这个代码不是那么直接,我们就需要借助一些工具来达成了,直接编译class文件。 这里给出一个文章:http://blog.csdn.net/hexin373/article/...

配置RedisTemplate、JedisPoolConfig、JedisConnectionFactory+自定义序列化 (xml+java方式)+使用

java方式配置RedisTemplate   //spring注入ben    //@Bean(name = "redisTemplate") public RedisTemplate initRedisTemplate(){ JedisPoolConfig poolConfig = new JedisPoolConfig();...

注解-组件注册02-@ComponentScan

  当需要扫描一个包下的所有注解时,可以在XML文件中进行配置: <!--包扫描,只要标注了@Controller、@Service、@Reposotory、@Component就可以被加载到spring bean容器--> <context:component-scan base-package="spring_annotation....

js中滑动门的实现方法和案例

很多小伙伴想做滑动门的时候没有思路,今天就分享一个案例: 下面这个div需要做滑动门效果 <div class="cont"> <ul> <li name="ulli" class="active">按钮1</li> <li na...