国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python 私有屬性和私有方法應用場景分析

瀏覽:4日期:2022-07-20 14:02:48

類的私有屬性和方法

Python是個開放的語言,默認情況下所有的屬性和方法都是公開的 或者叫公有方法,不像C++和 Java中有明確的public,private 關鍵字來區分私有公有。

Python默認的成員函數和成員變量都是公開的,類的私有屬性指只有在類的內部使用的屬性或方法,表現形式為以“__“ 屬性名或方法名以雙下劃線開頭。

class Test(object): __count = 0 # 私有屬性 __count def get_count(self): return self.__count # 類的內部可以使用私有屬性 def set_count(self, value): if self.__check_value(value): # 在類的內部調用類的私有方法 self.__class__.__count = value def __check_value(self, value): # 定義類的私有方法 檢查參數 if isinstance(value, int): return Truea = Test()print(a.get_count())a.set_count(100)print(a.get_count())#a.__check_value(10) # 調用私有方法會報錯#print(a.__count)# 直接訪問私有屬性也會報錯

應用場景

對于一些敏感的數據,我們不希望直接被的函數調用,或者不希望草率的直接 object.key = value 來修改,我們可以選擇將屬性聲名為私有的,這樣從外部時無法訪問該屬性的,也就不能修改了,但是依然可以修改屬性字典的方法來修改。

# 當然 可以使用 @proprety class Person(object): __name = ’Monkey’ def update_name(self, name): self.__name = name def get_name(self): return self.__namep = Person()p.update_name(’BlackMonkey’)print(p.get_name()) # BlackMonkeyprint(p.__name) # 報錯 AttributeError: ’Person’ object has no attribute ’__name’

下面在看下python中私有屬性和受保護的屬性的實例代碼

具體代碼如下所示:

class People: def __init__(self, name, age): self.name = name self.age = age self._protect_var = 10 # 受保護的成員,使用一個下劃線_,它僅僅是提示成員受保護,但可以被更改 self.__private_var = 10 # 使用雙下劃線__可以定義私有屬性 def sayhi(self): print('Hi, my name is {}, and I’m {}'.format(self.name, self.age)) def get_var(self): print(self.__private_var) def set_var(self, var): self.__private_var = var # class instance 類的實例化 someone = People(name=’Jack’, age=20) # 類的實例化print(someone._protect_var) # 10 受保護的成員可以被打印someone._protect_var = 20 # 受保護的成員可以被修改print(someone._protect_var) # 20 可以被修改 # print(someone.__private_var) # 報錯 AttributeError: ’People’ object has no attribute ’__private_var’someone.__private_var = 30 # 此處可以被修改,不會報錯(此處表示私有屬性可以被修改,具體原因可以百度)print(someone.__private_var) # 可以打印,不會報錯 someone.get_var() # 10 此處可以發現,__private_var在上面被改成30,但此處打印出來卻是10(具體原因可以百度)someone.set_var(40)someone.get_var() # 40 這里通過someone.set_var(40)改成了40 print(dir(someone)) # dir()打印出someone這個對象支持的屬性和方法# [’_People__private_var’, ’__class__’, ’__delattr__’, ’__dict__’, ’__dir__’, ’__doc__’, ’__eq__’, ’__format__’, ’__ge__’, ’__getattribute__’, ’__gt__’, ’__hash__’, ’__init__’, ’__init_subclass__’, ’__le__’, ’__lt__’, ’__module__’, ’__ne__’, ’__new__’, ’__private_var’, ’__reduce__’, ’__reduce_ex__’, ’__repr__’, ’__setattr__’, ’__sizeof__’, ’__str__’, ’__subclasshook__’, ’__weakref__’, ’_protect_var’, ’age’, ’get_var’, ’name’, ’sayhi’, ’set_var’]# 在類的內部重命名了 __private_var重命名成_People__private_var someone._People__private_var = 100someone.get_var() # 100 通過_People__private_var把__private_var的值改成了100

總結

到此這篇關于Python 私有屬性和私有方法應用場景分析的文章就介紹到這了,更多相關python 私有屬性和私有方法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 久久精品国产午夜伦班片 | 日本高清毛片视频在线看 | 国产高清视频免费在线观看 | 最近中文在线中文 | 九九99九九在线精品视频 | 一区二区三区伦理 | www.av在线免费观看 | 国产精品亚洲精品 | 免费成年人视频网站 | 国产国语对白一级毛片 | 99国产精品九九视频免费看 | 新版天堂资源中文8在线 | 国产成人a大片大片在线播放 | 国产成人精品一区二三区 | 国产日韩亚洲不卡高清在线观看 | 久久久久久毛片免费观看 | 美女很黄很黄 | www.久久久| 欧美大胆a | 日本xxxxx黄区免费看动漫 | 亚洲欧美久久精品一区 | 色天使色婷婷在线影院亚洲 | 精品欧美一区二区三区在线观看 | 国产日韩欧美 | 亚洲日本在线观看网址 | 日韩专区亚洲精品欧美专区 | 中国一级毛片免费观看 | 国内精品久久久久久影院老狼 | 女人张开腿让男人操 | 在线播放一区二区精品产 | 国产原创自拍 | 亚洲综合日本 | 一级aaaaaa毛片免费 | 亚洲自拍在线观看 | 特级毛片全部免费播放器 | 亚洲欧美一区二区视频 | 日本三级中文字幕 | 久久国产精品成人免费 | 992人人tv香蕉国产精品 | 黄色网址网站在线观看 | 国产综合在线播放 |