python继承编程教程_Python实现通过继承覆盖方法示例
本文實(shí)例講述了Python實(shí)現(xiàn)通過繼承覆蓋方法。分享給大家供大家參考,具體如下:
Python真是太動(dòng)態(tài)了,所有的方法默認(rèn)都是虛的。子類定義父類同名函數(shù)之后,父類函數(shù)被覆蓋。
class P(object):
def foo(self):
print "I am a P-foo()"
class C(P):
def foo(self):
print "I am a C-foo()"
>>>p=P()
>>>c=C()
>>>p.foo()
I am a P-foo()
>>>c.foo()
I am a C-foo()
這就引出了一個(gè)問題:重寫__init__不會(huì)自動(dòng)調(diào)用基類的__init__。在C++中如果使用了派生類默認(rèn)構(gòu)造函數(shù)的話,是會(huì)自動(dòng)調(diào)用基類的默認(rèn)默認(rèn)構(gòu)造函數(shù)的。C++中調(diào)用非默認(rèn)構(gòu)造函數(shù)是顯示調(diào)用基類構(gòu)造函數(shù)來初始化基類部分的。
class P(object):
def __init__(self):
print "P's constructor"
class C(P):
def __init__(self):
print "C's constructor"
>>>c=C()
C's constructor
如果需要調(diào)用基類構(gòu)造函數(shù)時(shí),可將C類定義改為
class C(P):
def __init__(self):
P.__init__(self)
print "C's constructor"
或者
class C(P):
def __init__(self):
super(C,self).__init__()
print "C's constructor"
使用super(className,self).functionName(沒有self!!)的重點(diǎn)是不需要提供父類,這意味著如果改變了類繼承關(guān)系,只需要改變一行代碼(class C(P)),此時(shí)尋找基類的事由super函數(shù)完成。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
本文標(biāo)題: Python實(shí)現(xiàn)通過繼承覆蓋方法示例
本文地址: http://www.cppcns.com/jiaoben/python/231678.html
總結(jié)
以上是生活随笔為你收集整理的python继承编程教程_Python实现通过继承覆盖方法示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的主要应用领域及常用的函数模
- 下一篇: python中shutil模块的用法_p