国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

跟老齊學Python之私有函數和專有方法

2020-02-23 06:07:54
字體:
來源:轉載
供稿:網友

在任何語言中,都會規定某些對象(屬性、方法、函數、類等)只能夠在某個范圍內訪問,出了這個范圍就不能訪問了。這是“公”、“私”之分。此外,還會專門為某些特殊的東西指定一些特殊表示,比如類的名字就不能用class,def等,這就是保留字。除了保留字,python中還為類的名字做了某些特殊準備,就是“專有”的范疇。

私有函數

在某些時候,會看到有一種方法命名比較特別,是以“__”雙劃線開頭的,將這類命名的函數/方法稱之為“私有函數”。

所謂私有函數,就是:

私有函數不可以從它們的模塊外面被調用
私有類方法不能夠從它們的類外面被調用
私有屬性不能夠從它們的類外面被訪問
跟私有對應的,就是所謂的公有啦。有的編程語言用特殊的關鍵詞來說明某函數或方法或類是私有還是公有。但是python僅僅用名字來說明,因為python深刻理解了2k年前孔先生丘所說的“名不正言不順”的含義。

如果一個 Python 函數,類方法,或屬性的名字以兩個下劃線開始 (但不是結束),它是私有的;其它所有的都是公有的。類方法或者是私有 (只能在它們自已的類中使用) 或者是公有 (任何地方都可使用)。例如:

代碼如下:
class Person:
def __init__(self,name):
    self.name = name

def __work(self,salary):
    print "%s salary is:%d"%(self.name,salary)

這里邊定義的方法__work()就是一個私有方法。

下面把上面的類進行完善,然后運行,通過實例來調用這個私有方法

代碼如下:
#!/usr/bin/env python
#coding:utf-8

class Person:
    def __init__(self,name):
        self.name = name
        print self.name

    def __work(self,salary):
        print "%s salary is: %d"%(self.name,salary)

if __name__=="__main__":
    officer = Person("Tom")
    officer.__work(1000)

#運行結果

Tom
Traceback (most recent call last):
  File "225.py", line 14, in <module>
    officer.__work(1000)
AttributeError: Person instance has no attribute '__work'

從運行結果中可以看出,當運行到officer.__work(1000)的時候,報錯了。并且從報錯信息中說,沒有該方法。這說明,這個私有方法,無法在類意外調用(其實類意外可以調用私有方法,就是太麻煩,況且也不提倡,故本教程濾去)。

下面將上述代碼進行修改,成為:

代碼如下:
#!/usr/bin/env python
#coding:utf-8

class Person:
    def __init__(self,name):

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图木舒克市| 丹江口市| 惠安县| 长乐市| 榕江县| 布拖县| 三亚市| 名山县| 廊坊市| 当涂县| 睢宁县| 古丈县| 元朗区| 黄骅市| 金溪县| 南川市| 和平县| 原阳县| 茶陵县| 桦甸市| 长子县| 息烽县| 靖宇县| 天全县| 葫芦岛市| 通渭县| 原阳县| 永春县| 五莲县| 江口县| 昌平区| 建德市| 台州市| 大石桥市| 佛坪县| 南溪县| 大姚县| 无锡市| 临湘市| 大同县| 大同县|