1. 程式人生 > >Python3 --- 私有化

Python3 --- 私有化

通過在方法或者在屬性上新增2個下劃線(__)表示私有化,相當於Java中的private
  • xx: 公有變數
  • _x: 單前置下劃線,私有化屬性或方法,from somemodule import *禁止匯入,類物件和子類可以訪問
  • __xx:雙前置下劃線,避免與子類中的屬性命名衝突,無法在外部直接訪問(名字重整所以訪問不到)
  • __xx__:雙前後下劃線,使用者名稱字空間的魔法物件或屬性。例如:__init__ , __ 不要自己發明這樣的名字
  • xx_:單後置下劃線,用於避免與Python關鍵詞的衝突
#coding=utf-8

class Person(object):
    def __init__(self, name, age, taste):
        self.name = name
        self._age = age 
        self.__taste = taste

    def showperson(self):
        print(self.name)
        print(self._age)
        print(self.__taste)

    def dowork(self):
        self._work()
        self.__away()


    def _work(self):
        print('my _work')

    def __away(self):
        print('my __away')

class Student(Person):
    def construction(self, name, age, taste):
        self.name = name
        self._age = age 
        self.__taste = taste

    def showstudent(self):
        print(self.name)
        print(self._age)
        print(self.__taste)

    @staticmethod
    def testbug():
        _Bug.showbug()

#模組內可以訪問,當from  cur_module import *時,不匯入
class _Bug(object):
    @staticmethod
    def showbug():
        print("showbug")

s1 = Student('jack', 25, 'football')
s1.showperson()
print('*'*20)

#無法訪問__taste,導致報錯
#s1.showstudent() 
s1.construction('rose', 30, 'basketball')
s1.showperson()
print('*'*20)

s1.showstudent()
print('*'*20)

Student.testbug()

注意:

  • 父類中屬性名為__名字的,子類不繼承,子類不能訪問
  • 如果在子類中向__名字賦值,那麼會在子類中定義的一個與父類相同名字的屬性
  • _名的變數、函式、類在使用from xxx import *時都不會被匯入

相關推薦

python3 私有化 屬性property

method set 命名沖突 value 導致 http ins 重新 賦值 私有化   xx:公有變量 _x:單前置下劃線,私有化屬性或方法,from somemodule import *禁止導入,類對象和子類可以訪問 __xx:雙前置下劃線,避免與子類中的屬性命名

Python3 --- 私有化

通過在方法或者在屬性上新增2個下劃線(__)表示私有化,相當於Java中的privatexx: 公有變數_x: 單前置下劃線,私有化屬性或方法,from somemodule import *禁止匯入,

python3下安裝aiohttp遇到過的那些坑

repl tro dml 解決問題 python版本 noj windows pop idv python3下安裝aiohttp遇到過的那些坑 最近需要用到aiohttp這個庫,在安裝過程中遇到很多坑。google、baidu後,依然沒有找到合適的解決方案。 後來通

Python3 MySQL 數據庫連接 -PyMySQL

creat usr 操作mysql 截斷 exists setup python2 包括 warn Python 3 操作mysql http://www.runoob.com/python3/python3-mysql.html Python3 MySQ

Python3 之 Web 框架:web框架的本質

但是 hub ima sgi 控制器 borde http ace esp 各位,學Python 的同誌,相信對 Django 、Flask、等不會陌生,這些就是Python語言的web 框架。 那麽問題來了,web 服務器又是什麽,他和web框架有什麽關系?他們又是如何工

Ubuntu安裝python3虛擬環境

get ubun 使用 基本命令 per 好處 技術 bsp 打開 大多數Linux自帶python2.7,而Ubuntu1.6也自帶python3.x,本文章主要記錄virtualenv+vitualenvwrapper使用python3虛擬環境 虛擬環境好處不多說,避免

Python3.x 文件操作

ada 字節數 tty 只讀 不存在 () read 一行 文件中 打開文件的模式有:1. 只讀模式(默認)2. 只寫模式(不可讀,不存在則創建,存在則覆蓋)3. 追加模式(可讀,不存在則創建,存在則只追加內容)"+"表示可同時讀寫某個文件:1. r+可讀寫文件(可讀,可寫

python3中各個字符編碼的轉換

code -s span utf pri 轉換 nic 順序 utf-8 a=‘我很好‘ ####python3 默認的編碼為unicode###unicode>gb2312unicode_gb2312=a.encode(‘gb2312‘) ###因為默認是un

Python3.x 文件操作練習

bind mat daemon 中一 logs defaults 字典 rec __name__ # 要求 1.可在配置文件中添加一條記錄 2.可刪除配置文件中一條記錄 # 增加: 1.用戶輸入以下字典類型的字符串(註意字串必須要用雙引號"",因為json不能識別單引號

centos7 安裝python3.6 及模塊安裝演示

更改 group sqli ins 修改 store get pen qlite 目錄: 下載python3.6 安裝python3.6的依賴 編譯安裝 更改鏈接 更改yum腳本的python依賴 修改gnome-weaktool配置文件 修改urlgrabber配置文件

python3學習之生成器

pythonrange() 和 xrange() 是生成器只要函數中存在yield,該函數就是生成器 g(): r = g() i r:python3學習之生成器

python3下的twisted

web imp get urllib logs nco cat .com 我們 在python2中我們使用twisted比較方便,網上資料也比較多,但是通常在python3中使用的時候,並不能成功。我也是找了好多資料沒有成功之後,自己去嘗試做小白鼠,測試了很久之後,發現傳遞

python3的正則表達式(regex)

超出 sub 替換 配對 sta 個數 忽略 re.sub 位置 正則表達式提供了一種緊湊的表示法,可用於表示字符串的組合,一個單獨的正則表達式可以表示無限數量的字符串。常用的5種用途:分析、搜索、搜索與替代、字符串的分割、驗證。 (一)正則表達式語言python中

python3學習之特殊變量

python#特殊變量 #__doc__ 獲取模塊註釋 #__file__ 當前執行文件的路徑 #__cached__ 對應pyc文件的位置 #__name__ 執行當前文件的時候,等於__main__;否則不等於;一般在主文件裏寫 #__package__ 模

python3學習之裝飾器

python#定義裝飾器,outer參數是函數,返回也是函數 #作用:在函數執行前和執行後分別附加額外功能 def outer(func): def inner(*args, **kwargs): print("log") func(*args, **kwargs)

python3學習之序列化

python其他-->字符串,叫序列化字符串-->其他,叫反序列化有兩個模塊:json 可以處理python基本數據類型,字典,列表,元組,保存的文件是“明文的”pickle 可以處理python全部數據類型,專用於python,保存的文件是“加密的”jsonimport json l =

python3學習之遞歸函數

python##遞歸函數 #自己調用自己 def t(a): if a == 1: return 1 return a + t(a-1) b = t(7) print(b) #計算1+2+3+4+5+6+7 的和python3學習之遞歸函數

python3第一天學習(數據類型)

絕對值 pre return col pytho tar .html art 整數 參考blog地址:http://www.cnblogs.com/wupeiqi/articles/5444685.html,然後根據上面知識點練習並總結。 一.數字(int) 1.數字

Python3-Django-1.開發環境搭建

file 響應 令行 ide star local bsp pla 創建 官網   https://www.djangoproject.com/ 安裝   http://www.runoob.com/django/django-install.html 創建項目   方式一

Windows10下python3和python2同時安裝 python2.exe、python3.exe和pip2、pip3設置

bsp net 運行 安裝python all 能夠 命令 自動添加 exe 1、添加python2到系統環境變量 打開,控制面板\系統和安全\系統,選擇高級系統設置,環境變量,選擇Path,點擊編輯,新建,分別添加D:\Python\python27和D:\P