1. 下劃線(單/雙)
主要存在四種情形
? ? 1. object # public
? ? 2. __object__ # 系統專用,用戶不要定義這樣的
? ? 3. __object # private私有,在運行時候命名改編,只有類對象自己能訪問
? ? 4. _object # 私有,保護變量
變量名_object被看作是“私有的”在模塊或類外不可以使用,不能用'from moduleimport *'導入。
"單下劃線" 開始的成員變量叫做保護變量,意思是只有類對象和子類對象自己能訪問到這些變量;"雙下劃線" 開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。
單劃線對象可以訪問,但良好的編程習慣是不要在外部使用它。雙下劃線的對象,外部使用會直接報錯。
2. self含義
self代表類的實例,而非類。
class Test:
? ? def prt(self):
? ? ? ? print(self)
? ? ? ? print(self.__class__)
t = Test()
t.prt()
執行結果如下
<__main__.Test object at 0x000000000284E080>
<class '__main__.Test'>
self是不可以省略的
class Test:
? ? def prt(this):
? ? ? ? print(this)
? ? ? ? print(this.__class__)
t = Test()
t.prt()
在Python的解釋器內部,當我們調用t.prt()時,實際上Python解釋成Test.prt(t),也就是說把self替換成類的實例。
self總結
self在定義時需要定義,但是在調用時會自動傳入。
self的名字并不是規定死的,但是最好還是按照約定是用self
self總是指調用時的類的實例。
3. list, tuple, dict, set的區別
定義:
list:鏈表,有序的項目, 通過索引進行查找,使用方括號”[]”;
tuple:元組,元組將多樣的對象集合到一起,不能修改,通過索引進行查找, 使用括號”()”;
dict:字典,字典是一組鍵(key)和值(value)的組合,通過鍵(key)進行查找,沒有順序, 使用大括號”{}”;
set:集合,無序,元素只出現一次, 自動去重,使用”set([])”
應用場景:
list, 簡單的數據集合,可以使用索引;
tuple, 把一些數據當做一個整體去使用,不能修改;
dict,使用鍵值和值進行關聯的數據;
set,數據只出現一次,只關心數據是否出現, 不關心其位置;
Python
# -*- coding: utf-8 -*-
#eclipse pydev, python 2,7
mylist = [1, 2, 3, 4, 'Oh']
mytuple = (1, 2, 'Hello', (4, 5))
mydict = {'Wang' : 1, 'Hu' : 2, 'Liu' : 4}
myset = set(['Wang', 'Hu', 'Liu', 4, 'Wang'])
Output
[1, 2, 3, 4, 'Oh']
(1, 2, 'Hello', (4, 5))
{'Liu': 4, 'Wang': 1, 'Hu': 2}
set(['Liu', 4, 'Wang', 'Hu'])