python之定義類創建實例


類的定義

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

>>>class Person(object):           #所有的類都是從object類繼承
              pass                 #pass先不做任何處理,先跳過,為了防止語法錯誤
 
創建類的屬性
>>> 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'
實例的創建

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

例如:

>>> class Person(object):
             pass

>>> p1 = Person()                      #創建實例
>>> p1.name = 'Bart'                   #創建實例屬性
>>> p2 = Person()
>>> p2.name = 'Adam'

 初始化實例屬性

>>> 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-2026 CODEPRJ.COM