Python class類的簡單介紹

2021-07-23 08:43:49 字數 3783 閱讀 7495

1.類與例項

類與例項互相關聯,類是例項的物件,而例項是真正的實物,他存放了類中所定義的物件的具體資訊

建立乙個類

class

mynewobject

(object):

class_suite

object是所有類之母,如果你的類沒有繼承任何其他的父類,object將作為預設的父類。它位於所有類繼承結構的最上層。如果你沒有繼承直接或者間接子類化乙個物件,那麼我們就定義了乙個經典類(不建議使用經典類)

class

mynewobject:

class_suite

例項化

先建立乙個類

class

myfirst

(object):

pass

#例項化這個類

obj=myfirst()

#關於類作為命名空間容器

>>> obj.x=4

>>> obj.y=5

>>> obj.y+obj.x

9>>>

"在這裡例項名字obj將obj.x與obj.y關聯起來,這就是我們所說的使用類作為名字空間容器。obj.x與obj.y是例項屬性,並不是類myfirst的屬性,是obj例項物件的獨有屬性。"

2.方法

類的功能有乙個更加通俗的名字叫做方法,在python中,方法定義在類定義中,但只能被例項所呼叫。

class

myclass

(object):

#定義類

defprintfoo

(self):

#定義方法

print

"you win"

"對於seld引數,他在所有的方法宣告中都存在,這個引數代表例項物件本身,當你用例項呼叫方法的時候,由直譯器悄悄的傳遞給方法,你不需要自己傳遞self進來,因為他是自動傳人的。在其他的語言中self被稱為「this」 一般的方法會需要這個例項,而靜態方法或者類方法就不需要,其中類方法需要的是類而不是例項"

#例項化類,建立乙個物件

obj=myclass()

obj.printfoo()

*******output*******

you win

3.建立乙個類
class

mynewobject

(object):

def__init__

(self,name,phone):

self.name=name

self.phone=phone

print

"created instance for:",self.name

defupdatephone

(self,newphone):

self.phone=newphone

print

"update phone %s for %s"%(self.phone,self.name)

#例項化

obj=mynewobject('cmustard',12345676)

***********output************

created instance for: cmustard

#方法呼叫更新

obj.updatephone(2345235235)

***********output************

update phone 2345235235

for cmustard

#訪問例項屬性

print obj.name

print obj.phone

***********output************

cmustard

2345235235

在這個類中定義了兩個方法__init__和updatephone.__init__()類似於類構造器,他在建立乙個新的物件時被呼叫,在例項化的過程中,呼叫__init__()方法,當乙個類被例項化時,就可以定義額外的行為,比如設定初始值等等。

4.建立和使用子類

class

newclass

(mynewobject):

def__init__

(self,name,phone,id,email):

mynewobject.__init__(self,name,phone)

self.id=id

self.email=email

defupdateemail

(self,newemail):

self.email=newemail

print

"update e-mail address for ",self.name

"我們建立了乙個mynewobject的乙個子類,這個新的類,不僅繼承了父類的updatephone方法,還增加了updateemail方法"

"注意,這裡我們要顯示傳遞self例項物件給基類構造器,因為我們不是在在例項中而是在乙個子類例項中呼叫哪個方法。只是因為我們不是通過例項來呼叫它,這種未繫結的方法呼叫需要傳遞乙個適當的例項(self)給他"

>>> cmustard=newclass('cmustard','400-820-8820',3345,'[email protected]')

created instance for: cmustard

>>>

print cmustard

<__main__.newclass object at>

>>> cmustard.name='mustard'

>>> cmustard.name

'mustard'

>>> cmustard.updatephone('400-110-3345')

update phone 400-110-3345

for mustard

>>> cmustard.email

'[email protected]'

>>> cmustard.updateemail('[email protected]')

update e-mail address for mustard

>>> cmustard.email

'[email protected]'

>>>

>>> cmustard.id

3345

>>>

4.常用術語

1.抽象/實現

抽象指對現實世界問題和實體的本質表現,行為和特徵建模,建立乙個相關的子集,可以用於描繪程式結構從而實現這種模型。

2.封裝/介面

3.合成

合成擴充了對類的描述,是得對個不同的類合成為乙個大的類,來解決現實問題,。合成描述了乙個異常複雜的系統,比如乙個類有其他類組成,更小的元件也有可能是其他類,資料屬性及行為,所有這些合在一起,彼此是「有乙個」的關係。

4.派生/繼承/繼承結構

5.泛華/特化

泛華表示所有子類與其父類及祖先類有一樣的特點,所有子類可以認為同祖先類是「是乙個」關係,因為乙個派生物件是乙個祖先類的例子。

6.多型

多型表明了動態(後來又稱為執行時)繫結的存在,允許過載以及執行時型別確定和驗證

Python class類轉字典

有時候會需要從包裝的類裡面取出需要的資料,但有不能直接取出來 可以通過如下 把class轉換成字典 將class轉dict,以 開頭的也要 defprops with obj pr for name in dir obj value getattr obj,name ifnot name.start...

Python class 類 裝飾器

class father def init self,name self.name name print name s self.name defgetname self return father self.name class son father def getname self return...

Python Class專題 二 類的方法

每日一語 每一次相遇,都是靈魂在共鳴!小亮的部落格 2019.5.19於北洋 在類的內部,使用 def 關鍵字來定義乙個方法,與一般函式定義不同,類方法必須包含引數 self,且為第乙個引數,self 代表的是類的例項。usr bin python3 類定義 class people 定義基本屬性 ...