#!-*-coding:utf-8-*-
#__author__ = 'ecaoyng'
# # 變數
#_***,單下劃線開頭的變數,標明是乙個受保護(protected)的變數,原則上不允許直接訪問,但外部類還是可以訪問到這個變數。
#這只是程式設計師之間的乙個約定,用於警告說明這是乙個私有變數,外部類不要去訪問它。
class
student:
def__init__
(self, name, age):
self._name = name
self.age=age
stu=student('alvin','30')
#當要輸入_name時,pycharm不會進行_name的提示
print(stu._name)
#當要顯示age時,pycharm會進行age的提示
print(stu.age)
#output:
#alvin
#30# __***,雙下劃線開頭的,表示的是私有型別(private)的變數。
# 只能是允許這個類本身進行訪問了, 連子類也不可以.
# 用於命名乙個類屬性(類變數),呼叫時名字被改變
#(在類student內部,__name變成_student__name,如 self._student__name)
# 雙下劃線開頭的例項變數是不是一定不能從外部訪問呢?其實也不是。仍然可以通過_student__name來訪問__name變數:
class
person:
def__init__
(self, name):
self.__name=name
per=person('young')
print(per._person__name)
#output: young
#__***__,以雙下劃線開頭,並且以雙下劃線結尾的,是內建變數.
# 內建變數是可以直接訪問的,不是 private 變數,如__init__,__import__或是__file__。
# 所以,不要自己定義這類變數
#***_,單下劃線結尾的變數一般只是為了避免與 python 關鍵字的命名衝突
#user_constant,大寫加下劃線,對於不會發生改變的全域性變數,使用大寫加下劃線
#函式
#總體而言應該使用,小寫和下劃線。但有些比較老的庫使用的是混合大小寫,即首單詞小寫,之後每個單詞第乙個字母大寫,其餘小寫。
# 但現在,小寫和下劃線已成為規範
#私有方法 : 小寫和乙個前導下劃線
#這裡和私有變數一樣,並不是真正的私有訪問許可權。
# 同時也應該注意一般函式不要使用兩個前導下劃線(當遇到兩個前導下劃線時,python 的名稱改編特性將發揮作用)。特殊函式後面會提及。
class
privatec:
def_secrete
(self):
print('don\'t test me')
pric=privatec()
pric._secrete()
#特殊方法 : 小寫和兩個前導下劃線,兩個後置下劃線
#這種風格只應用於特殊函式,比如操作符過載等。
def__add__
(self, other):
return int.__add__(other)
#函式引數 : 小寫和下劃線,預設值等號兩邊無空格
defconnect
(self, user=none):
self._user = user
#類
#類總是使用駝峰格式命名,即所有單詞首字母大寫其餘字母小寫。
# 類名應該簡明,精確,並足以從中理解類所完成的工作。
# 常見的乙個方法是使用表示其型別或者特性的字尾,例如:sqlengine ,mimetypes
#對於基類而言,可以使用乙個 base 或者 abstract 字首
# 不要濫用 *args 和 **kwargs,可能會破壞函式的健壯性
#推薦
#一行列數 : pep 8 規定為 79 列,這有些苛刻了。根據自己的情況,比如不要超過滿屏時編輯器的顯示列數。這樣就可以在不動水平游標的情況下,方便的檢視**。
#乙個函式 : 不要超過 30 行**, 即可顯示在乙個螢幕類,可以不使用垂直游標即可看到整個函式。
#乙個類 : 不要超過 200 行**,不要有超過 10 個方法。
#乙個模組 不要超過 500 行。
# easy_install pep8
# pep8 -r --ignoire e501 test.py
# 這個命令列的意思是,重複打出錯誤,並且忽略 501 錯誤(**超過 79 行)。
Python3中關於下劃線變數和命名的總結
變數 coding utf 8 author ecaoyng 變數 單下劃線開頭的變數,標明是乙個受保護 protected 的變數,原則上不允許直接訪問,但外部類還是可以訪問到這個變數。這只是程式設計師之間的乙個約定,用於警告說明這是乙個私有變數,外部類不要去訪問它。class student d...
Python3中 下劃線 和
在看一些python開源 時,經常會看到以下劃線或者雙下劃線開頭的方法或者屬性,到底它們有什程式設計客棧麼作用,又有什麼樣的區別呢?今天我們來總結一下 注 下文中的 在pythowww.cppcns.comn3下測試通過 的含義 在python的類中沒有真正的私有屬性或方法,沒有真正的私有化。但為了...
Python中單下劃線和雙下劃線
python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。class a def init self,text self.text text def str self return self...