python裏運用私有屬性和方法總結

在本文裏我們給大家分享了關於python裏運用私有屬性和方法總結以及相關知識點內容,有興趣的朋友們跟着參考學習下。

如何在PYTHON裏運用私有屬性和方法

class File:
 
  def __init__(self, name):
 
    self.name = name
 
    self.code = "ABCDEF"
 
     
 
file_A = File("file_A")

#假設我們有一個類,叫做文件類,設置一個對象file_A。在這裏插入圖片描述
file_A.code

#如果直接調用屬性,是可以看到屬性裏面有什麼,但是如果這是個機密的密碼不能公佈,是不能這麼處理的。在這裏插入圖片描述

class File:
 
  def __init__(self, name):
 
    self.name = name
 
    self.__code = "ABCDEF"
 
     
 
file_A = File("file_A")
 
print(file_A.code)

#如果不想密碼公佈,可以對屬性的名稱加上__,但是這裏出錯了。在這裏插入圖片描述

class File:
 
  def __init__(self, name):
 
    self.name = name
 
    self.__code = "ABCDEF"
 
     
 
file_A = File("file_A")
 
print(file_A.__code)

#很多人以爲是因爲外部的名稱打少了__,但是這裏依舊出錯了,那是因爲這是私有的屬性。在這裏插入圖片描述

class File:
 
  def __init__(self, name):
 
    self.name = name
 
    self.__code = "ABCDEF"
 
  def open(self):
 
    print("This is the AAA file!")
 
     
 
file_A = File("file_A")
 
file_A.open()

#除了屬性,方法也能私有嗎?答案是可以的。在這裏插入圖片描述

class File:
 
  def __init__(self, name):
 
    self.name = name
 
    self.__code = "ABCDEF"
 
  def __open(self):
 
    print("This is the AAA file!")
 
     
 
file_A = File("file_A")
 
file_A.__open()

私有方法以後,看出來和私有屬性的返回結果是一致的。
在這裏插入圖片描述

class File:
 
  def __init__(self, name):
 
    self.name = name
 
    self.__code = "ABCDEF"
 
  def __open(self):
 
    print("This is the AAA file!")
 
     
 
file_A = File("file_A")
 
print(file_A._File__code)
 
file_A._File__open()

#在PYTHON裏面如果在方法和屬性那裏加上_類名是可以看到私有的屬性和方法的。在這裏插入圖片描述
知識點擴展:

python默認的成員函數和成員變量都是公開的,python 私有屬性和方法沒有類似別的語言的public,private等關鍵詞來修飾。 在python中定義私有變量只需要在變量名或函數名前加上 "__"兩個下劃線,那麼這個函數或變量就會爲私有的了。 在內部,python使用一種 name mangling 技術,將 __membername替換成 _classname__membername,所以你在外部使用原來的私有成員的名字時,會提示找不到。 比如:

class Person:
 
def __init__(self):
self.__name = 'haha'#私有屬性
self.age = 22
 
def __get_name(self):##私有方法
return self.__name
 
def get_age(self):
return self.age
 
person = Person()
print person.get_age()
print person.__get_name()
運行結果是:22 Traceback (most recent call last): File "E:\pythoner\zenghe\jay.py", line 38, in print person.__get_name() AttributeError: Person instance has no attribute '__get_name'

我們這裏定義的__name是私有屬性,__get_name()是私有方法。如果直接訪問的話,會提示找不到相關的屬性或者方法,但是如果你真要訪問私 有的相關數據的話, 也是可以訪問的,嚴格地說,私有方法在它們的類外是可以訪問的,只是不容易 處理。在 Python 中沒有什麼是真正私有的;在內部,私有方法和屬性的名字被忽然改變和恢復,以致於使得它們看上去用它們給定的名字是無法使用的

非常感謝你的閱讀
大學的時候選擇了自學python,工作了發現吃了計算機基礎不好的虧,學歷不行這是
沒辦法的事,只能後天彌補,於是在編碼之外開啓了自己的逆襲之路,不斷的學習python核心知識,深入的研習計算機基礎知識,整理好了,我放在我們的Python學習扣qun:250933691,如果你也不甘平庸,那就與我一起在編碼之外,不斷成長吧!
其實這裏不僅有技術,更有那些技術之外的東西,比如,如何做一個精緻的程序員,而不是“屌絲”,程序員本身就是高貴的一種存在啊,難道不是嗎?[點擊加入]想做你自己想成爲高尚人,加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章