日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python面向对象编程(二)

發布時間:2025/3/15 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python面向对象编程(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第17,18個:面向對象三大特性之多態
?? ?

1 def func(arg): 2 print(arg) 3 4 #python支持多種形態(類型) 5 #優點:不需要先聲明是什么字符,數字類型 6 #缺點:看查源碼的時候不知道是什么類型 7 func(1) 8 func("hk") 9 func([11,22,33,44])


第19,20,21個:類成員之靜態字段和普通字段
?? ?

1 class foo: 2 #字段(靜態字段)屬于類 3 cc = 123 4 def __init__(self): 5 #字段(普通字段)屬于對象 6 self.name = 'la' 7 8 def show(self): 9 print(self.name) 10 11 obj = foo()


字段位置及訪問規則范例:

1 class province: 2 country = "中國" #靜態字段存在類里,在代碼加載時已創建 3 def __init__(self,name): 4 self.name = name #普通字段存在于對象里,對象創建后調用時存在于內存中 5 #如果country字段存在對象中被反復調用會占用大量的內存資源 6 #省的屬性是中國 7 hn = province('河南') 8 hb = province('河北') 9 sd = province('山東') 10 print(hn.name) #打印河南的名字 11 12 13 # 一般情況:自己訪問自己的字段,即類訪問靜態字段、對象訪問普通字段 14 #字段訪問規則: 15 # 普通字段只能用對象訪問 16 # 靜態字段用類訪問(萬不得已才可使用對象訪問) 17 print(hn.name) 18 print(province.country) 19 #print(hn.country)


第22,23個:類成員之普通方法和靜態方法以及類
?? ?
方法:
?? ?所有的方法屬于類
?? ?1、普通方法:至少一個self,對象執行
?? ?2、靜態方法:任意參數, 類執行(萬不得已才可使用對象訪問)
?? ?3、類方法:至少有一個cls,類執行(萬不得已才可使用對象訪問)
?? ?

1 class province: 2 country = "中國" 3 def __init__(self,name): 4 self.name = name 5 6 #普通方法,由對象去調用執行(方法屬于類) 7 def show(self): 8 print(self.name) 9 return True 10 11 #靜態方法屬于類,由類來調用執行。可以沒有參數也可以有多個參數 12 @staticmethod 13 def f1(arg1,arg2): 14 print(arg1,arg2) 15 16 #類方法由類來調用,是靜態方法的一種特殊形式,至少有一個參數cls 17 @classmethod 18 def f2(cls): 19 print(cls) 20 21 hn = province('河南') #創建對象 22 print(hn.show()) #對象調用普通方法 23 24 province.f1(12,34) #類調用靜態方法 25 province.f2() #類調用類方法,打印出類的名稱


第24,25,26個:類成員之屬性

?

屬性:
  具有方法的寫作形式,具有字段的訪問形式
  具體方法里做什么都是自己定義的

1 ''' 2 class pager: 3   def __init__(self,all_count): 4     self.all_count = all_count 5 6   def all_pager(self): 7     a1,a2=divmod(self.all_count,10) 8     if a2 == 0 : 9       return a1 10     else: 11       return a1 + 1 12 p = pager(101) 13 print(p.all_pager()) 14 ''' 15 class pager: 16   def __init__(self,all_count): 17     self.all_count = all_count 18 19   @property #表示添加了屬性,調用的時候就不用加括號 20   def all_pager(self): 21     a1,a2=divmod(self.all_count,10) 22     if a2 == 0 : 23       return a1 24     else: 25       return a1 + 1 26 p = pager(101) 27 print(p.all_pager) #調用all_pager方法取值的時候不用加括號

-----------------------------------------
屬性即可以 獲取 又可以 設置 還可以 刪除
第一種形式(比較少見):

1 class pager: 2   def __init__(self,all_count): 3     self.all_count = all_count 4    5   @property #表示添加了屬性,調用的時候就不用加括號 6   def all_pager(self): 7     a1,a2=divmod(self.all_count,10) 8     if a2 == 0 : 9       return a1 10     else: 11       return a1 + 1 12 13   @all_pager.setter 14   def all_pager(self,value): 15     print(value) 16 17   @all_pager.deleter 18   def all_pager(self): 19     print(123) 20 21 p = pager(100) #100是和__init__方法里的all_count一致的 22 print(p.all_pager) #獲取 23 p.all_pager=111 #設置 24 del p.all_pager #刪除

?

第二種形式(比較常見):

1 class pager: 2   def __init__(self,all_count): 3     self.all_count = all_count 4 5   def f1(self): 6     return 123 7   def f2(self,value): 8     print(value) 9   def f3(self): 10     print(1234) 11 12 foo = property(fget=f1,fset=f2,fdel=f3) 13 14 p = pager(100) 15 print(p.foo) #對應著fget=f1 16 p.foo = "han" #對應著fget=f2 17 del p.foo #對應著fget=f3

?

第27個:類成員之成員修飾符

成員:字段、方法、屬性
兩種修飾符:一種私有(只能在類內部訪問)
      一種公有

公有修飾符:

1 class foo: 2   def __init__(self,name): 3     self.name = name 4 5   def f1(self): 6     print(self.name) 7 8 p = foo("hk") 9 #共有的兩種形式: 10 #print(p.name) #1在類的外部直接調用 11 print(p.f1()) #2在類的外部通過方法間接的調用

私有修飾符:

1 class foo: 2   def __init__(self,name): 3     self.__name = name #創建一個私有的字段 4 5   def f1(self): 6     print(self.__name) #私有的字段 7 8 p = foo("hk") 9 print(p.f1()) #私有的字段只能在類的內部調用,通過f1方法調用
# print(p._foo__name) #私有的成員修飾符也可以訪問,不到萬不得已不用!!!

存在類的繼承,父類的私有子類是無法獲取的。

1 class foo: 2 def __init__(self,name): 3 self.__name = name #創建一個私有的字段 4 5 def f1(self): 6 print(self.__name) #私有的字段 7 8 class bar(foo): 9 def f2(self): 10 print(self.__name) 11 12 obj = bar("han") 13 obj.f2() #存在類的繼承,私有的成員修飾符也是不可以的。

?

1 class foo: 2 __cc = 123 #靜態字段 3 def __init__(self,name): 4 self.name = name 5 def f1(self): 6 print(self.name) 7 return 135 8 def f2(self): 9 print(foo.__cc) #類名 . 靜態字段 10 ''' 11 @staticmethod #靜態方法 12 def f3(): 13 print(foo.__cc) 14 foo.f3() 15 ''' 16 obj = foo('han') 17 print(obj.f2()) #對象執行f2的方法,私有的成員修飾符在類中可以找到并執行

?

轉載于:https://www.cnblogs.com/hanxiaobei/p/5751414.html

總結

以上是生活随笔為你收集整理的Python面向对象编程(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。