6 x3 o9 Y7 r! _6 N6 C' ~% P3 m7 E
''' * w. K7 _, n$ [4 h* h' X/ ~$ U多态:多态就是具有多种形态,即便不知道一个变量所引用的对象是什么类型,仍然可以使用这个变量调用方法,在运行过程中根据变量所引用的对象类型,动态决定调用那个对象中的方法'''9 V1 I- T" a* E Y# t
4 U# M2 B! @- q
# 动态语言多崇尚鸭子类型,当一只鸟走起来向鸭子,游起来以向鸭子,看起来也像鸭子,那么这只鸟及可以被称为鸭子# {( C' V+ n) y- b. ]
- g9 X, Y1 o/ \0 h
" O. ^0 m7 Y# Fclass Animal(object): 0 J c( w. c: v2 V i# E def eat(self):% _+ v4 g7 M% Z- E" a" K: i( y
print('动物会吃')8 ~7 d1 c l3 J/ i8 F4 B# [
3 F3 H8 V8 [! D t% w( a! k
. q* b3 s- J8 |4 `6 l. \
class Dog(Animal):+ O$ K/ P7 L' X
def eat(self): ; P M9 w* X4 R) [& c print('够吃骨头') 2 W6 ]; m' y6 N, n9 u- w- d& P 3 B! b, z% m0 Z l/ F |6 N, N Q* c1 s, T
class Cat(Animal): 3 l$ H/ S' Y: m; d$ V. J; ~2 X def eat(self):0 n3 X$ l# W. H. B0 _
print('猫吃小鱼') ( B \- f4 d# f5 ^5 N3 W$ a* o2 Z5 k1 w% |; z. ]5 C6 q
8 K0 E z* @; @. }" ~. ?/ ?class Person:2 p3 C0 d- I, C: c9 ?( b
def eat(self):6 `* O5 Y5 i) Q; J! z& T" Q
print('人吃五谷杂粮')# p: V n1 U" E9 W
/ t0 X2 y! u3 Y6 ]" V" B. M # D- [! p! {+ A# 定义一个函数 Z8 T8 W. K8 X3 q2 O2 }0 O
def fun(fun1): ' b9 C/ z; d& @$ O4 E W fun1.eat() # 调用对象的eat()方法 6 j: t b. X% f# H8 E" T 3 j7 u9 f- }5 \7 u. z * Y; g) z1 J0 R. y3 ?3 Sif __name__ == '__main__':) B4 o" F* Y2 _
# 开始调用函数 1 p: S6 k P" x1 Y. D fun(Animal()) # Cat继承了Animal Dog继承了Animal8 O! D* N) Y- |6 x, Q
fun(Cat()) # Cat 和Dog是重写了父类中的eat方法,调用了自己重写后的内容# d( H7 f, K6 _% v* \6 b2 G( J+ a
fun(Dog())& U% {( W1 l+ ?2 @1 Q
2 Z6 v# m. p9 z2 Q
print('------------------')& ?# h1 Z2 h7 x6 P! A
fun(Person()) # Person 没有继承关系 但是有eat方法,直接调用eat方法 5 `3 @; {2 C: Q: t6 ` I 8 F, c# D6 C" p4 H2 q $ l# B1 M n1 x5 L) \1 7 O* m' @2 P8 t0 K8 j9 t( {2 9 K! U8 v; |: ~5 [+ r* W& t0 O( B3# D7 z: f I3 I" B4 `! x7 i
4# E& [( ^7 \$ z/ G% O8 h- L1 e, N
5 - o3 F1 r/ d* ]8 [' N. `1 E6 3 P8 z& L" t3 u+ V: S; ]9 ?7 ( P' Q1 a/ v5 T; }% r( A \8 4 h" n& \% M7 d2 Z9 3 W: m4 v3 [( P7 w: n10, |+ ]9 @* p9 g$ }' l$ X0 b" p
11 % P5 N6 X B% x" E! `& M12 ; {; C( E ~7 Q* \( L13, m4 I/ b) B! D8 @) Q5 u9 F
147 U! f9 c8 n. Q5 l
15/ p0 r7 F. U* n P1 V' E, i5 D
16& i! }7 W ^9 @, A
170 V3 J( c/ P* t2 n6 _" ~
184 ^& P- s5 ]- f" ?% t! K1 ]3 R7 Q: z
19 9 @. p G2 B2 q1 X3 f20 w% A2 M s; V5 |8 v2 y
21 ( f! Z& I+ h7 P/ l% {22/ Z- _2 d( m; I) d+ x
23 8 b& E8 T* k/ g( x6 X% V& j5 x9 D Y3 C24 v$ M0 h9 l `3 }8 P, z% M9 J
25 8 o. o) H6 ?/ N# T26! [5 N5 U- [6 P# [
27: ]$ V$ Y; J. `+ ]& {
28 6 F/ a$ M# j$ @7 b29/ M" D- z% z \! y9 a- a1 w
30 - ~3 E4 _! [$ E. ^5 _5 \% k31 . M6 `' d) d/ k# ]. X) A32 ! {# X$ C! ^/ X% f6 e" p8 l33 - z/ V, r4 G# v( c2 ~/ [$ V6 k34% u& k! ~) T: r& j
35% y% `; H* v: o3 X% M+ R- n# i: j- d1 s9 Y
36: A! {; P! T4 A9 D( @2 W. @" C) Z
376 T A# [. x# R
380 Z% N" H8 Z: e# z9 }/ o# M: O5 o
39, [8 v( f e' _6 A7 O
40 / D- h' \: {% V9 c- D41) z6 ?' Z( I- i0 T
42 1 S9 @2 N; U$ E% V6 ^437 C5 C& E; U4 {3 l
44" C+ b9 G% t% e2 {
45" ]2 \7 }& J" q' _
46+ C! }9 k4 F5 F/ G; V7 Z1 M
47& F3 Q5 j5 ~1 J7 \