python继承,看这篇就够了
admin
2024-04-29 11:03:54
0

前言

说到面向对象,大家都不陌生。在python中,一切皆对象,我们使用类来表示具有相同属性和方法的对象的集合。而继承则是一种创建新类的方式,这个新类可以使用被继承类的属性。今天就来说说python中的继承。

继承的概念

继承用于类的创建上,新创建的叫子类,而被继承的叫做父类。子类可以使用父类属性,继承是描述类与类之间的关系。

为什么要用继承呢?因为继承可以减少代码的冗余以及提高代码的重用性。我们在工作中,用到继承的地方很多。

继承的种类

python里继承总共有单继承、多继承和多层继承。

单继承

单继承指的是子类只继承一个父类。示例:

class A():def __init__(self):self.a = 'a'def test_a(self):print("aaaa")class B(A):def __init__(self):self.b = 'b'def test_b(self):self.test_a()print("bbbb")obj = B()
obj.test_b()复制代码

例子中,B类只继承A类的方法。在B类中用self.test_a()即可调用A类的test_a()方法。

多继承

多继承指的是子类继承了多个父类。来个示例:

class A():def __init__(self):self.a = 'a'def test_a(self):print("aaaa")class B():def __init__(self):self.b = 'b'def test_b(self):print("bbbb")class C(A, B):def __init__(self):self.c = 'c'def test_c(self):self.test_a()self.test_b()
复制代码

例子中,C类就分别继承了A类和B类的方法。 多层继承就是指子类继承的父类也有继承别的类,这里就不举例了。

子类重写父类方法

在某些场景下,子类继承了父类的属性和方法,但子类有同名的方法,这时候就需要重写子类的方法了。

class A():def __init__(self):self.a = 'a'def test(self):print("aaaa")class B(A):def __init__(self):self.b = 'b'super().__init__()def test(self):print("bbbb")
复制代码

例子中B类继承A类的属性和test()方法,但B也有test方法,那么只需要在B类中重新定义个test()方法即可。

继承的注意事项及常见运用

注意事项

  • 子类如果重写了__init__方法,子类就不会自动继承父类__init__中的属性。如果要继承父类的属性,需要用到super方法,我们在B类的__init__方法中加上:
super(子类,self).__init__(参数0,参数1...)
父类名称.__init__(self,参数0,参数1...)
复制代码

若继承父类的所有属性就直接用super().__init__()

  • 在调用基类方法时,需加上基类的类名前缀,并带上self参数变量。但在类中调用普通函数不需要带上self函数。

常见运用

继承在python中运用非常广,比如各种模块源码就使用到了继承,我们写代码时如配置代码、log日志打印都用到了继承。

相关内容

热门资讯

不卷流量卷算力,三大运营商集体... 【大河财立方 记者 李雯雯】5月19日,三大运营商盘中再度走强,其中中国电信领涨,收涨4.4%。资本...
港交所上市热潮彰显香港国际金融... 香港交易所的锣,最近有点忙不过来。 仅3月30日当天,这面锣就敲响了7次:四家公司上市,三只ETF挂...
嘉兴银行“新帅”确定:行长王芳... 嘉兴银行“新帅”确定:行长王芳升任党委书记 人民财讯5月19日电,据嘉兴银行消息,嘉兴市委常委、常务...
这届年轻人的置业逻辑变了!报告... 5月18日,58同城、安居客发布《2026青年置业报告》。这份基于数千名20-35岁年轻人的调研,揭...
金融让生活更美好|上银财富“5... 为更好地满足广大客户多元化、多层次的财富保值增值需求,上海银行于5月18日正式启动“518财富理想节...
追觅俞浩回应设立上百个BU:A... 来源:中国企业家 做企业不是开故事会,发展才能解释问题,发展才能解决问题 文|《中国企业家》记者 ...
原创 强... 2026年5月13日,深圳。华为和总资产1.5万亿的中国中化,正式签下一份深化战略合作协议。 一家...
金价,还在跌!警惕骗局—— 5月18日早盘,现货黄金短时下跌,失守4500美元/盎司,为3月底以来首次。 【此前报道:】5月19...
中国电信:选举柯瑞文为董事长;... 据每日经济新闻:5月19日,中国电信(601728.SH)公告称,公司第九届董事会第一次会议选举柯瑞...
2026第六届中国贵州国际能源... 5月18日,2026第六届中国贵州国际能源产业博览交易会(简称“贵州能博会”)在贵阳国际会议展览中心...
华为轮值董事长徐直军访问东风汽... 2026年5月19日,华为轮值董事长徐直军,华为公司高级副总裁、引望公司CEO靳玉志一行到访东风汽车...
20cm股热度渐升!涨停数追平... 财联社5月19日讯(编辑 梓隆),近期,创业板、科创板股热度较高,截至今日(5月19日)收盘,累计共...
原创 告... 1499,这个数字陪了我们好几年。买飞天茅台的人,对它太熟悉了。可就在3月30日晚上,贵州茅台一纸公...
美国30年期国债收益率升至20... 美国30年期国债收益率上升至5.177%,为2007年以来的最高水平。 (本文来自第一财经)
一人掌控2家国产存储龙头,57... 一个老板,左手握着国内芯片设计龙头兆易创新,右手攥着国产DRAM市场第一的长鑫科技,57亿关联交易深...
跟宇树一比,云深处太贵了? 营收仅宇树五分之一,估值倍数贵了约60%。 AIX财经(AIXcaijing)原创 作者|王汉星 编...
华曦达将在港交所上市:业绩波动... 来源|贝多商业&贝多财经 5月18日,深圳市华曦达科技股份有限公司(下称“华曦达”,HK:00901...
微纳星空科创板IPO拟募资50... 上交所&深交所 新 股 上 市 5月12日-5月18日,上交所无公司上市;深交所主板有2家公司上市。...
突发!伊朗股市,重新开市!特朗... 刚刚,伊朗股市恢复交易! 据央视新闻报道,当地时间5月19日,伊朗德黑兰证券交易所恢复股票交易。目前...