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玩了個 名稱變化術 儘管雙下劃線有些奇怪,但是看起來像是其他語言中的標準的私有方法.真正發生的事情才是不標準的.類的內部定義中,所有以雙下劃線開始的名字都...