python8之面向對象補充之知識點回顧
阿新 • • 發佈:2017-06-12
pre def 江蘇 字段 調用方法 python init 父類 沒有
一、self關鍵字
作用:調用當前方法的對象
class Foo: #靜態字段或者公有屬性 country = "中國" def __init__(self,name,count): self.name = name self.count = count def bar(self): pass obj1 = Foo("江蘇",100000) obj1.bar
註意:country = "中國" 屬於公有字段,它的作用是:每個對象中保存相同的東西時,可以使用靜態字段
二、封裝
- 類中封裝了 :字段、方法
- 對象中封裝了:普通字段的值
- 不僅可以封裝字段,還可以封裝對象
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 =F3(o2) o3 ====> o2 # o2 = F2(o1) o3.b.a # o1 = F1("alex") o1.b.a.N
三、繼承
說明:子類繼承父類,對象調用方法時,先從自己的類中去找,找不到,就會去找父類中的方法。
class F1: def __init__(self): print(‘F1‘) def a1(self): print("F1a1") def a2(self): print("F1a2") class F2(F1): def __init__(self): print("F1") def a1(self): print("F2a1") def a2(self): self.a2() print("F2a2") class F3(F2): def __init__(self): print("F3") def a2(self): print("F3a2") obj = F3() obj.a1() #輸出 F3a2 F2a1
上面代碼訪問的順序如下:
- 先去到F3中找a1方法,沒有找到
- 到F2父類去找,找到了a1方法,去執行a1方法
- 執行過程中需要調用F3中的a2方法
四、靜態方法
4.1 類的組成
- 字段:1.普通字段(保存在對象中),2靜態字段(保存在類中)
- 方法:普通方法(保存在類中,用對象去調用)
class F1: age = 18 #靜態字段 def __init__(self,name): self.name = name #普通字段 def a1(self): #普通方法 print(‘F1a1‘)
4.2 靜態方法
特點:
- 保存在類中
- 調用者無需創建對象
- 可以有任意個參數
class F1:
@staticmethod #聲明是靜態方法
def a1(n1,n2): #無需傳入對象,但是可以聲明多個值
print(‘xiaogao‘)
F1.a1(1,2) #類名.方法名 方式調用
作用:當對象不需要傳入參數時,去創建對象有些浪費,占著資源,所以還不如直接用類名直接去調用,這個類似於函數。
python8之面向對象補充之知識點回顧