首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python继承子类调用父类方法

方法一:指名道姓,即父类名.父类方法()

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

classPerson():

country="西安"

def__init__(self,name,age):

self.name=name

self.age=age

defrun(self):

print("老爹欢迎你....")

classSon(Person):

def__init__(self,name,age,sex):

#调用父类方法一

Person.__init__(self,name,age)

defrun(self):

Person.run(self)#调用父类方法

print("%s欢迎光临...."%self.name)

s=Son("李白",26,"男")

s.run()

运行结果

方法二:super()

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

classPerson():

country="西安"

def__init__(self,name,age):

self.name=name

self.age=age

defrun(self):

print("老爹欢迎你....")

classSon(Person):

def__init__(self,name,age,sex):

#调用父类方法一

# Person.__init__(self, name, age)

#调用父类方法二

super(Son,self).__init__(name,age)

self.sex=sex

defrun(self):

Person.run(self)#调用父类方法

print("%s欢迎光临...."%self.name)

s=Son("李白",26,"男")

s.run()

二者使用哪一种都可以,但最好不要混合使用

当你使用super()函数时,Python会在MRO列表上继续搜索下一个类。只要每个重定义的方法统一使用super()并只调用它一次,那么控制流最终会遍历完整个MRO列表,每个方法也只会被调用一次(注意注意注意:使用super调用的所有属性,都是从MRO列表当前的位置往后找,千万不要通过看代码去找继承关系,一定要看MRO列表)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180929G1WXPF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券