本文实例讲述了Python实现通过继承覆盖方法。分享给大家供大家参考,具体如下:
Python真是太动态了,所有的方法默认都是虚的。子类定义父类同名函数之后,父类函数被覆盖。
class P( ):
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()
这就引出了一个问题:重写__init__不会自动调用基类的__init__。在C++中如果使用了派生类默认构造函数的话,是会自动调用基类的默认默认构造函数的。C++中调用非默认构造函数是显示调用基类构造函数来初始化基类部分的。
class P( ):
def __init__(self):
print "P's constructor"
class C(P):
def __init__(self):
print "C's constructor"
>>>c=C()
C's constructor
如果需要调用基类构造函数时,可将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!!)的重点是不需要提供父类,这意味着如果改变了类继承关系,只需要改变一行代码(class C(P)),此时寻找基类的事由super函数完成。
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
继续阅读与本文标签相同的文章
上一篇 :
深度干货:高段位的人,都有一种“可迁移能力”!
下一篇 :
2019年二月产业大事记
-
任正非:6G或将10年内问世
2026-05-15栏目: 教程
-
微博:用户反馈张雨晗帐号刷数据 已暂停商业接单功能
2026-05-15栏目: 教程
-
布局AR野心的起点 Bose Frames智能蓝牙音频眼镜体验
2026-05-15栏目: 教程
-
已删除的短信在哪里找?iPhone短信恢复方法
2026-05-15栏目: 教程
-
5G城市,智慧军运!天河机场打造华中首个5G全覆盖机场
2026-05-15栏目: 教程
