python中類的介紹

2021-08-21 06:07:14 字數 4706 閱讀 2819

1 類(class):用來描述具有相同的屬性和方法的物件的集合,它定義了該集合中每個物件所共有的屬性和方法。

物件是類的例項。

類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。

資料成員:類變數或者例項變數,用於處理類及其例項物件的相關資料。

例項變數:定義在方法中的變數,只作用於當前例項的類。

例項化:建立乙個類的例項,類的具體物件

方法:類中定義的函式

物件:通過類定義的資料結構的例項。物件包括兩個資料成員(類變數和例項變數)和方法。

(用來接收類 p =people(),如果在init中定義了引數,在這裡也可以傳入進去)

總結:類相當於模板,物件相當於模板的生成的產品,方法就是類中定義的函式。

通過以下**,來熟悉相關名詞

class

people

(object):

name =''

*** = false

age = 0

height = ''

weight = ''

sleep = ''

# 以上幾個變數是乙個類變數,它的值將在這個類的所有例項之間共享,可以在類的內部或者外部通過people.name實現

defeat

(self):

print('人類出生就會吃')

defsleep

(self):

print('人類天生會睡覺')

defwork

(self):

print('每個人都有勞動的權利')

# 建立乙個物件叫做p

p = people()

p.name = '張三'

p.age = 17

p.*** = false

p.height = 176

p.weight = '70kg'

print(p)

# 輸出:<__main__.people object at 0x0221f810>

print(p.name)

# 輸出: 張三

p.eat()

# 輸出:人類出生就會吃

p.work()

2 . 類的初始化方法與例項:

init()方法是一種特殊的方法,被稱為類的建構函式或初始化方法,init 初始化 魔術方法的一種,用來初始化物件。

在建立物件的時候,init方法會自動呼叫,也就是說當建立了這個類的例項時就會呼叫該方法

在初始化的時候,可以直接給引數增加預設值

self 代表類的例項,self 在定義類的方法時是必須有的,雖然在呼叫時不必傳入相應的引數 (可以認為是一種格式)

class

people

(object):

def__init__

(self,name, age, ***,height='178'):

self.name = name

self.age = age

self.*** = ***

self.height = height

defstudy

(self):

print('只有學習才能讓我感到快樂')

# 在建立物件的時候,直接賦值。

p = people('李四',17,true,height='19')

print(p.name)

# 輸出:李四

print(p.height)

# 輸出:19

物件屬性與類屬性的呼叫

先看如下**

class

people

(object):

# 類變數

name = '道德經'

age = '19'

def__init__

(self, fond=''):

# 物件屬性

self.fond = fond

# 物件方法 ,self 表示

defsay

(self):

print('hello')

(1) 『物件屬性』不能通過類名+屬性的方式來呼叫,只能通過物件來呼叫

print(people.fond)

# 輸出:attributeerror: type object 'people' has no attribute 'fond'

(2) 『類屬性『可以通過類名+屬性的方式來呼叫 ,也可以通過物件來呼叫

print(people.age)

# 輸出:19

(3)物件方法可以通過物件+方法名 這種形式呼叫

p1.say()

# 輸出:hello

(4)也可以通過類名 + 方法名,然後將『』物件『』當成引數傳入方法中這種形式來呼叫

people.say(p1)

#輸出: hello

私有屬性:

類的私有屬性:兩個下劃線開頭,宣告該屬性私有,不能在類的外部被使用或直接訪問,

在類內部的方法中使用時self.__private_attrs

類的方法:在類的內部,使用def關鍵字可以為類定義乙個方法,與一般函式不同,類方法必須包含引數self,且為第乙個引數

類的私有方法: __private_method:兩個下劃線開頭,宣告該方法為私有方法,

不能在類的外部呼叫。在類的內部呼叫self.__private_methods

單下劃線、雙下劃線、頭尾雙下劃線說明:

foo:定義的是特殊方法,一般是系統定義的名字,類似init()之類的。

_foo:以單下劃線開頭的表示的是protected型別的變數,即保護型別 只能允許其本身與子類進行訪問,不能用於from module import *

__foo: 雙下劃線表示的是私有型別(private)的變數,只能允許這個類本身進行訪問了

class

justcounter:

__secretcount = 0

# 私有類變數

publiccount = 0

# 公開類變數

defcount

(self):

self.__secretcount +=1

self.publiccount +=1

print(self.secretcount)

#print(self.publiccount)

counter = justcounter()

counter.count()

counter.count()

# print(counter.publiccount) # 輸出:1 2 2

print(counter.__secretcount)

# 輸出:attributeerror: 'justcounter' object has no attribute 'secretcount'

python 不允許例項化的類訪問私有資料,但是可以使用 object.classname__attrname(物件名.類名__私有屬性名) 訪問屬性 如下**:

class

runnob

(object):

__site = 'www.runnob.com'

runnob = runnob()

print(runnob._runnob__site)

# 輸出:www.runnob.com

再來乙個例子鞏固一下:

class

people

(object):

def__init__

(self, name='', ***='', age='16', fond='學習'):

self.name = name

self._*** = ***

self.__age = age

self.__fond = fond

p = people

p.name = '張三'

print(p.name)

# 輸出: 張三

p._*** = '男'

print(p._***)

# 輸出:男

# 能獲取到 __age的值

# 用類呼叫的屬性

print(p._people__age)

# 輸出16

p.__age = '17'

print(p.__age)

# 輸出:17

p.grilfriend = '小美'

print(p.grilfriend)

# 如果有這個屬性, 則修改屬性值

# 如果沒有,則新增。

# 跟字典的很相近

總結: 如果是單下劃線,可以通過p._name = 『小張』 這種方式使用

如果是雙下劃線,可以通過,p._people__name 這種方式使用

python類的介紹 Python 類的介紹

如何建立類 class 類名 pass eg class bar 定義乙個類 def foo self,arg self 永遠是呼叫方法的物件,即中間人 print self,self.name,self.age,arg obj bar 使用 bar 類,建立乙個物件 obj print obj o...

python中類的屬性和方法介紹

python 類屬性,例項屬性,類方法,靜態方法,例項方法 類屬性和例項屬性 coding utf 8 class student object name i am a class variable 類變數 s student 建立例項s print s.name 列印name屬性,因為例項並沒有n...

python中類的特點 Python中的類(一)

python中的類 一 一 應用場景 如果多個函式中有一些相同的引數時,轉換成物件導向。二 如何建立類 類是用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。class 類名 pass 三 類變數 類變數在整個例項化的物件中是公用的。類變數定義在類...