Python 面向對象基礎知識
阿新 • • 發佈:2017-11-12
方法 .com 有時 border 多態 函數 print align sta
面向對象基礎知識 |
1.什麽是面向對象編程?
- 以前使用函數
- 類 + 對象
2.什麽是類什麽是對象,又有什麽關系?
class 類: def 函數1(): pass def 函數2(): pass # obj是對象,實例化的過程 obj = 類() obj.函數1()
========== 面向對象不好 ============
========== 函數編程好 ==============
- 有時候,函數編程能實現?比較麻煩。
- 面向對象非常的簡單就能實現。
3.什麽時候適用面向對象?
- 1.當多個函數有公共的參數的時候
- 2.根據一個模板創建某些東西
- 3.鏈接服務器,執行命令,關閉
註:面向對象,可以進行更多的修改需求修改。
4.self就是調用當前方法的對象。
- 函數(方法)保存在類裏面。
- 字段保存在對象內存下。
5.靜態字段的使用場景。
- 創建的每一個字段都有共同的值,就可以設置為靜態字段。
成員屬性
class Foo: def __init__(self,name): #普通字段,屬性 self.NAME = name self.Country = "中國"
全局屬性
class Foo: #靜態字段,公有屬性 Country= "中國" def __init__(self,name): self.NAME = name
6.面向對象三大特性,繼承,封裝,多態。
封裝:
- 類中封裝:字段,方法
- 對象中封裝了:普通字段的值
例子
class F1: def __init__(self,n): self.N = n print(‘F1‘) class F2: def __init__(self,arg1): self.a = arg1 print(‘F2‘) class F3: def __init__(self,arg2): self.b= arg2 print(‘F3‘) o1 = F1(‘alex‘) o2 = F2(o1) o3 = F3(o2) ########### 輸出Alex:o3.b.a.N########### #o1 = F1(‘alex‘) #o2 = F2(o1) #o3 = F3(o2) #print(o3.b.a.N) #執行結果 #alex #註: o3包含o2包含o1包含N賦值alex。
繼承:
例子:
求出結果:對應繼承。
class F1: def __init__(self): print(‘F1‘) def a1(self): print(‘F1a1‘) def a2(self): print(‘F1a2‘) class F2(F1): def __init__(self): print(‘F2‘) def a1(self): print(‘F2a1‘) def a2(self): self.a2() print(‘F2a2‘) class F3(F2): def __init__(self): print(‘F3‘) # def a1(self): # print(‘F3a1‘) def a2(self): print(‘F3a1‘) obj = F3() obj.a1()
多態:
- python:默認支持多態,沒有類型限制
- 多態:多種形態。
7.字段與方法
字段:
普通字段(保存在對象中)
靜態字段(保存在類中)
方法:
普通方法(保存在類中,調用者對象,至少有一個self參數)
class F1: ... def a1(self): print(self.name) obj = F1() obj.a1 = a1() # 註:obj 對象內存沒有存入數據,會占用內存。
靜態方法(保存在類中,調用者類,無需創建對象,可以有任意個參數):
class F1: @staticmethod def a1(): print(self.name) F1.a1() # 註:相當於函數 @staticmethod。
Python 面向對象基礎知識