python多态的概念_python中的多态
多態(tài)性是允許將父對(duì)象設(shè)置成為和一個(gè)或多個(gè)它的子對(duì)象相等的技術(shù),比如Parent:=Child; 多態(tài)性使得能夠利用同一類(基類)類型的指針來(lái)引用不同類的對(duì)象,以及根據(jù)所引用對(duì)象的不同,以不同的方式執(zhí)行相同的操作.
c++中多態(tài)更容易理解的概念為
允許父類指針或名稱來(lái)引用子類對(duì)象,或?qū)ο蠓椒?#xff0c;而實(shí)際調(diào)用的方法為對(duì)象的類類型方法。
--------------以上內(nèi)容來(lái)自百度百科----------------
python不支持多態(tài)python是一種動(dòng)態(tài)語(yǔ)言,參數(shù)在傳入之前是無(wú)法確定參數(shù)類型的,看下面例子:
[python] view plaincopyclass?A:
def?prt(self):
print "A"
class?B(A):
def?prt(self):
print "B"
class?C(A):
def?prt(self):
print "C"
class?D(A):
pass
class?E:
def?prt(self):
print "E"
class?F:
pass
def?test(arg):
arg.prt()
a?=?A()
b?=?B()
c?=?C()
d?=?D()
e?=?E()
f?=?F()
test(a)
test(b)
test(c)
test(d)
test(e)
test(f)
輸出結(jié)果:
A
B
C
A
E
Traceback (most recent call last):
File "/Users/shikefu678/Documents/Aptana Studio 3 Workspace/demo/demo.py", line 33, in
test(a),test(b),test(c),test(d),test(e),test(f)
File "/Users/shikefu678/Documents/Aptana Studio 3 Workspace/demo/demo.py", line 24, in test
arg.prt()
AttributeError: F instance has no attribute 'prt'
乍一看似乎python支持多態(tài),調(diào)用test(a),test(b),test(c),test(d)時(shí)工作的很好,但是下邊就大不一樣了。調(diào)用test(e)時(shí),python只是調(diào)用e的prt方法,并沒有判斷e是否為A子類的對(duì)象(事實(shí)上,定義test方法時(shí)也沒有指定參數(shù)的類型,python根本無(wú)法判斷)。調(diào)用test(f)時(shí)報(bào)錯(cuò),原因很很簡(jiǎn)單,f沒有prt方法。
總結(jié)
以上是生活随笔為你收集整理的python多态的概念_python中的多态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: celeba数据集_人脸识别常用数据集介
- 下一篇: keras保存模型_onnx+tenso