Python類之類的成員 張灰灰

2022-09-23 19:27:07 字數 2445 閱讀 9163

python類之類的成員

對於乙個學c++的朋友來說,python類中,哪些是私有成員,哪些是共有成員,估計一直傻傻分不清。

一、本篇部落格要解決的問題:

python類中,哪些是私有成員?哪些是共有成員?

二、 關於python的類

要想了解python的類,就必須認識到,當你在python中寫了乙個類的時候,你就已經構建了乙個新的型別。

所以,你寫的型別其本身有屬性和方法,而型別對應的例項,也有自己的屬性,不過並沒有方法。

也就是說,python中的類,實際上有兩層含義,第一層是類本身,第二層是例項。

型別本身有屬性和方法,類的屬性可以在所有例項中傳遞,類的方法用來處理例項的資料。

例項本身只有屬性,沒有方法,屬性就是要被類的方法所處理的資料。

python通過class語句定義乙個類,通過__init__(self, *para)構造乙個例項,並通過__del__(self)來解構。class是類,self是例項。

三、解決問題。

了解了上面所說的類和例項之後,你可能就已經明白了。python中類的屬性其實就是共有變數,我們稱之為類的變數,類的變數可以在所有例項中間傳遞。而例項的屬性則可以大致看成是私有變數,但其實這並不是嚴格意義上的私有變數,因為我們依然可以通過instance.property來訪問並修改這些屬性。綜上所述:python中,類的成員,有兩種。

1、類成員。可以通過class.property來呼叫,也可以通過instance.property來呼叫,該屬性可以在所有例項中傳遞

2、例項的成員。只能通過instance.property來呼叫,該屬性不與其他例項共享。

3、注意,類的self相當於c++中的指標,但是也有所不同,因為self只指示該例項的資料,不指示類的屬性和方法。所以當你需要在類的方法中呼叫類的屬性或者類的其他方法的時候,你需要用類名或者self來指明。但是用類名和用self來指明時,結果是不一樣的。詳情請見四中的例項**。

四、示例**

# -*- coding: utf-8 -*-

# author: zxr

# time: 2019-04-10

# functionality: test class

class testclass:

val = 0

def __init__(self, v):

self.val1 = v

def show(self):

print ('-'*60)

print (self.val1)

def add_using_classname(self):

self.val1 += testclass.val

testclass.show(self)

# below code is unvalid

# self.val1 += val

# show()

def add_using_self(self):

self.val1 += self.val

self.show()

if __name__ == '__main__':

tc = testclass(1)

tp = testclass(10)

print (testclass.val)

print (tc.val)

print (tc.val1)

print (testclass.val)

print (tp.val)

print (tp.val1)

print ('-'*60)

testclass.val = 2

print ('-'*60)

print (testclass.val)

print (tc.val)

print (tc.val1)

print (testclass.val)

print (tp.val)

print (tp.val1)

print ('-'*60)

tp.val1 = 3

tc.val1 = 4

tp.val = 30

tc.val = 40

print ('-'*60)

print (testclass.val)

print (tp.val)

print (tc.val)

print (tp.val1)

print (tc.val1)

tc.add_using_classname()

tp.add_using_classname()

tc.add_using_self()

tp.add_using_self()

test class

總結:python中的類與c++中的類是不一樣的。python中的每例項化乙個例項之後,就拷貝了乙個該類的副本,對這個例項的任何修改都不會影響到類。同樣的,要想修改類中的屬性,也只能在類中修改,在例項中的修改影響不了其他例項。

python類成員 Python類之類的成員

對於乙個學c 的朋友來說,python類中,哪些是私有成員,哪些是共有成員,估計一直傻傻分不清。一 本篇部落格要解決的問題 python類中,哪些是私有成員?哪些是共有成員?二 關於python的類 所以,你寫的型別其本身有屬性和方法,而型別對應的例項,也有自己的屬性,不過並沒有方法。也就是說,py...

Python之類的特殊成員方法

類的特殊成員方法 1.doc 列印類的描述資訊 class foo 描述類資訊,這是用於看片的神奇 def func self pass print foo.doc 輸出 類的描述資訊 2.module 表示當前操作的物件在那個模組 class c def init self self.name w...

python之類私有成員

python類的成員前加雙下劃線 則被看作 私有 成員.例項不能簡單地通過.來訪問.但python的 私有 成員也不是不可訪問的,只是python玩了個 名稱變化術 儘管雙下劃線有些奇怪,但是看起來像是其他語言中的標準的私有方法.真正發生的事情才是不標準的.類的內部定義中,所有以雙下劃線開始的名字都...