1. 程式人生 > >面向物件【day07】:知識點回顧(十二)

面向物件【day07】:知識點回顧(十二)

本節內容

1、self關鍵字

2、封裝

3、繼承

4、靜態方法

一、self關鍵字

作用:呼叫當前方法的物件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 class  Foo:            #靜態欄位或者公有屬性      country  =  "中國"       
def  __init__( self ,name,count):          self .name  =  name          self .count 
=  count        def  bar( self ):          pass   obj1  =  Foo( "江蘇" 100000 ) obj1.bar

注意:country = "中國" 屬於公有欄位,它的作用是:每個物件中儲存相同的東西時,可以使用靜態欄位

 

二、封裝

  • 類中封裝了 :欄位、方法
  • 物件中封裝了:普通欄位的值
  • 不僅可以封裝欄位,還可以封裝物件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 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

三、繼承

說明:子類繼承父類,物件呼叫方法時,先從自己的類中去找,找不到,就會去找父類中的方法。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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

上面程式碼訪問的順序如下:

  1.  先去到F3中找a1方法,沒有找到
  2. 到F2父類去找,找到了a1方法,去執行a1方法
  3. 執行過程中需要呼叫F3中的a2方法

四、靜態方法

4.1 類的組成

  • 欄位:1.普通欄位(儲存在物件中),2靜態欄位(儲存在類中)
  • 方法:普通方法(儲存在類中,用物件去呼叫)
1 2 3 4 5 6 7 class  F1:      age  =  18   #靜態欄位      def  __init__( self ,name):          self .name  =  name   #普通欄位        def  a1( self ):    #普通方法          print ( 'F1a1' )

4.2 靜態方法

特點:

  1. 儲存在類中
  2. 呼叫者無需建立物件
  3. 可以有任意個引數
1 2 3 4 5 6 7 8 class  F1:            @staticmethod    #宣告是靜態方法      def  a1(n1,n2):    #無需傳入物件,但是可以宣告多個值          print ( 'xiaogao' )     F1.a1( 1 , 2 )    #類名.方法名 方式呼叫

作用:當物件不需要傳入引數時,去建立物件有些浪費,佔著資源,所以還不如直接用類名直接去呼叫,這個類似於函式。