python 面向對象——繼承與多態


Python是面向對象的編程語言,面向對象的基本單元是類

類的聲明:

1 class class_name():
2     pass

測試如下:

In [1]: class c():
   ...:     pass
   ...: 

In [2]: a=c()

In [3]: a
Out[3]: <__main__.c instance at 0x07500A30>

類的繼承:

 1 In [4]: class base():
 2    ...:     def f(self):
 3    ...:         print 'base'
 4    ...:         
 5 
 6 In [5]: class sub(base):
 7    ...:     pass
 8    ...: 
 9 
10 In [6]: x=sub()
11 
12 In [7]: x.f
13 Out[7]: <bound method sub.f of <__main__.sub instance at 0x074FD7D8>>
14 
15 In [8]: x.f()
16 base

成員變量,在初始化函數__init__中對成員變量賦值即可,__init__函數相當於C++及Java中的構造函數

例如:

 1 In [9]: class c():
 2    ...:     def __init__(self,name,age):
 3    ...:         self._name=name
 4    ...:         self._age=age
 5    ...:     def printinfo(self):
 6    ...:         print self._name,self._age
 7    ...:         
 8 
 9 In [10]: x=c('P','10')
10 
11 In [11]: x.printinfo()
12 P 10

實例屬性

 1 class d():
 2     def __init__(self):
 3         self._name='a'
 4         self._age=10
 5     def printinfo(self):
 6         print self._name,self._age
 7 
 8 #==============================================================================
 9 #   第一種方式
10 #==============================================================================
11     def get_name(self):
12         return self._name
13         
14     def set_name(self,value):
15         self._name=value
16     
17     name=property(fget=get_name,fset=set_name)
18 
19 #==============================================================================
20 #   第一種方式
21 #==============================================================================
22     @property
23     def age(self):
24         return self._age
25     
26     @age.setter
27     def age(self,value):
28         self._age=value
29     
30         

測試如下:

 1 In [16]: x=d()
 2 
 3 In [17]: x.printinfo()
 4 a 10
 5 
 6 In [18]: x.name
 7 Out[18]: 'a'
 8 
 9 In [19]: x.age
10 Out[19]: 10
11 
12 In [20]: x.name='b'
13 
14 In [21]: x.name
15 Out[21]: 'b'
16 
17 In [22]: x.age=9
18 
19 In [23]: x.age
20 Out[23]: 9

虛函數性質,同名覆蓋

 1 class e():
 2     def f(self):
 3         print 'base'
 4 
 5 class f(e):
 6     def f(self):
 7         print 'son'
 8 
 9 class g(e):
10     pass
11 
12 class h():
13     def f(self,e):
14         e.f()
15 
16 a=e()
17 a.f()
18 b=f()
19 b.f()
20 c=g()
21 c.f()
22 x=h()
23 x.f(a)
24 x.f(b)
25 x.f(c)

測試結果

1 base
2 son
3 base
4 base
5 son
6 base

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM