Python的類的定義和構造

2021-08-28 04:15:38 字數 3713 閱讀 7778

在python中,所有的資料型別都被視為物件,也可以自定義物件,自定義物件資料型別就是物件導向中的類的概念。

類:用來描述具有相同屬性和方法的物件的集合,類定義了集合中每個物件共有的屬性和方法。物件是類的例項。

class

myclass:

'''a example class'''

x = 'abc'

#類屬性

deffoo

(self):

#類屬性foo,也是方法

return

'my class'

print(myclass.x)

print(myclass.foo)

print(myclass.__doc__)

class是關鍵字,不能重複 類名必須使用大駝峰命名 類定義完後,會產生乙個類物件繫結到了識別符號classname上。

類物件及類屬性

1,類物件,類的定義就會生成乙個類物件

2,類的屬性,類定義中的變數和類中定義的方法都是類的屬性

3,類變數,上例中x是類myclass的變數

myclass中,x 、foo 都是類的屬性,doc也是類的屬性

foo是方法物件method,不再是普通的函式物件function了。至少乙個引數self。self指代當前例項本身。

當我們呼叫類時,需要進行類的例項化,即建立乙個類的例項。python例項化後,會自動呼叫 《雙下劃線init雙下劃線》方法。作用:對例項進行初始化。

class

myclass:

def__init__

(self):

print('init')

print(1,myclass)#不會呼叫

print(2,myclass())#呼叫__init__

a = myclass()#呼叫 __init__

結果:

1 < class 『main.myclass』>

init

2 <main.myclass object at 0x0000000004c9d5f8>

init

上面的例項化:a = myclasss()

初始化函式可以有多個引數,第乙個引數必須是self。

class

person:

def__init__

(self,name,age):

self.name = name

self.age = age

defshowage

(self):

print('{} is {}'.format(self.name,self.age))

tom = person('tom',20)#例項化,會呼叫__init__方法並為 例項進行屬性的初始化

jerry = person('je',25)

print(tom.name,jerry.age)

jerry.age += 1

print(jerry.age)

jerry.showage()

tom 25

26 je is 26

例項物件instance

例項化後就會獲得乙個例項物件

類例項化後,得到乙個例項物件,例項物件會繫結方法,呼叫方法時採用jerry.showage()的方式,python會把方法的呼叫者作為第乙個引數self的實參傳入。self.name就是jerry物件的name,name是儲存在了jerry物件上,而不是person類上,所以,稱為例項變數。

例項變數和類變數有什麼區別呢?

class

person:

age = 3

def__init__

(self,name):

self.name = name

tom = person('tom')#例項化,初始化

jerry = person('jerry')

print(tom.name,tom.age)

print(jerry.name,jerry.age)

print(person.age)

person.age = 30

print(person.age,tom.age,jerry.age)

結果:

tom 3

jerry 3

3 30 30 30

上面例子可以看到:例項變數是每乙個例項自己的變數,是自己獨有的;類變數是類的變數,是類的所有例項共享的屬性和方法。

類的屬性儲存在類的dict中,例項屬性儲存在例項的dict中,從例項訪問類的屬性,就需要借助class找到所屬的類.

class

person:

age = 3

height = 170

def__init__

(self,name,age = 18):

self.name = name

self.age = age

tom = person('tom')#例項化、初始化

jerry = person('jerry',20)

person.age= 30

print(1,person.age,tom.age,jerry.age)

#print(person.__dict__)

#print(jerry.__dict__)

print(2,person.height,tom.height,jerry.height)

jerry.height = 175

print(3,person.height,tom.height,jerry.height)

tom.height += 10

print(4,person.height,tom.height,jerry.height)

person.height += 15

print(5,person.height,tom.height,jerry.height)

person.weight = 70

print(person.weight,tom.weight,jerry.weight)

print(tom.__dict__['height'])

#print(tom.__dict__['weight'])#不可以

print(tom.__dict__)

結果:

1 30 18 20

2 170 170 170

3 170 170 175

4 170 180 175

5 185 180 175

70 70 70

180

總結:1,是類的,就是這個類所有例項的,所有例項都可以訪問到;是例項的,就是這例項自身的,類訪問不到。2,類的變數屬於類的變數,類的所有例項可以共享這個變數。3,例項或類可以動態的給自己增加乙個屬性,tom.height 和 tom.dict[『height』] 訪問這個屬性。例項的同名變數會覆蓋掉類的變數。

例項使用  點號  來訪問屬性,先找自己的字典,沒有就自己類的字典中找,如果例項使用__dict__[變數名]訪問變數,就只從自己的字典中去找。

string類的建構函式和物件定義

c 知識點 string類的建構函式和物件定義 string類的建構函式原型 記住就好 1.string 預設建構函式,創造空串 2.string const char s 用字串來構造新字串 3.string const char s,unsigned n 用字串前n個字元來構造新串 4.stri...

Python 類的構造

定義dog類,類名一般首字母大寫。方法 init 是乙個特殊的方法,請注意是雙下劃線。每當你根據dog類建立新例項時,python都會自動執行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,旨在避免python預設方法與普通方法發生名稱衝突。類的方法與普通的函式只有乙個特別的區別 它...

python類的定義和使用

python 類的使用。1.使用乙個名為 init 的方法來完成初始化。2.使用乙個名為 del 的方法來完成類似析購操作。3.所有的例項方法都擁有乙個 self 引數來傳遞當前例項,類似於 this。1 usr bin python 2 decoding gbk 3 4import sys 5 6...