python多态的概念_python中的多态
多態性是允許將父對象設置成為和一個或多個它的子對象相等的技術,比如Parent:=Child; 多態性使得能夠利用同一類(基類)類型的指針來引用不同類的對象,以及根據所引用對象的不同,以不同的方式執行相同的操作.
c++中多態更容易理解的概念為
允許父類指針或名稱來引用子類對象,或對象方法,而實際調用的方法為對象的類類型方法。
--------------以上內容來自百度百科----------------
python不支持多態python是一種動態語言,參數在傳入之前是無法確定參數類型的,看下面例子:
[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)
輸出結果:
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支持多態,調用test(a),test(b),test(c),test(d)時工作的很好,但是下邊就大不一樣了。調用test(e)時,python只是調用e的prt方法,并沒有判斷e是否為A子類的對象(事實上,定義test方法時也沒有指定參數的類型,python根本無法判斷)。調用test(f)時報錯,原因很很簡單,f沒有prt方法。
總結
以上是生活随笔為你收集整理的python多态的概念_python中的多态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: celeba数据集_人脸识别常用数据集介
- 下一篇: keras保存模型_onnx+tenso