python之定義類創建實例


https://www.cnblogs.com/evablogs/p/6688938.html

類的定義

在Python中,類通過class關鍵字定義,類名以大寫字母開頭

1
2
>>> class  Person( object ):            #所有的類都是從object類繼承
               pass                  #pass先不做任何處理,先跳過,為了防止語法錯誤
 
創建類的屬性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>>  class  Person( object ):
          address  =  'Earth'                        #類的屬性直接在類內部定義,當實例屬性和類屬性重名時,實例屬性優先級高
          def  __init__( self , name):
                 self .name  =  name
>>> Person.address                                #直接通過類.屬性可以訪問
'Earth'
>>>p1 = Person( 'A' )                               
>>>p1.address                                     #通過創建類的實例,也可以通過實例.屬性訪問
'Earth'
>>> Person.address = 'KKKK'                         #類的屬性可以動態修改
>>> Person.address
'KKKK'
>>>p1.address                                     #類的屬性一經修改,所有訪問的屬性值也隨之更改
'KKKK'
實例的創建

創建實例使用 類名+(),類似函數調用的形式創建:

例如:

1
2
3
4
5
6
7
>>>  class  Person( object ):
              pass
 
>>> p1  =  Person()                       #創建實例
>>> p1.name  =  'Bart'                    #創建實例屬性
>>> p2  =  Person()
>>> p2.name  =  'Adam'

 初始化實例屬性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>>  class  Person( object ):
              class = 1                                               #定義類屬性
              def  __init__( self , name,age):          #__init__(self,屬性1,屬性2....):self代表實例,通過self訪問實例對象的變量和函數
              self .name  =  name
              self .__age = age                                         #實例的私有屬性無法從外部訪問,但是,從類的內部是可以訪問的
#定義實例方法
              def  get_name( self ):
                    return  self .__age                               #實例方法,定義在類內部,可以訪問實例的私有屬性__age
#定義類方法
              @classmethod
              def  how_many( cls ):                                    #通過@classmethod標記類方法,類方法的第一個參數為cls,cls.class相當於Person.class
                   return  cls . class                                 #類方法中無法調用任何實例的變量,只能獲得類引用
>>> p1  =  Person( 'Bob' , 12 )
>>>  print  p1.get_age()                                             #實例方法的調用,self不需要顯式傳入

 注意:

下划線和雙下划線的區別:

以單下划線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,那么以“_”開頭的名稱都不會被導入,即不能用“from xxx import *”而導入,除非模塊或包中的“__all__”列表顯式地包含了它們;

以雙下划線開頭的(__foo)代表類的私有成員,只有類本身能訪問,其子類對象也不能訪問到這個數據。


免責聲明!

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



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