python中得公有和私有——私有函數和公開函數_補充完整


  • 包括實例屬性、類屬性,私有成員和公有成員,公有方法、私有方法和靜態方法。

類似_xxx和__xxx這樣的函數或變量就是非公開的,不應該被直接引用。如下:


# python私有函數
def _abc_1(name):
return "Hello, 私有函數一號為:%s" %name
def _abc_2(name):
return "Hi, 私有函數二號為:%s" %name

# python公有函數
def greeting(name):
if len(name)>3:
return _abc_1(name)
else:
return _abc_2(name)

print(greeting('frank'))
  • 類Class中成員變量有兩種屬性分別是:實例屬性和類屬性。

    • 實例屬性是在構造函數中定義的(init),定義時候以self作為前綴。

    • 類屬性是在類中方法之外但又在類之中定義的屬性。類屬性在所有實例之間共享。在類內部和類外部都可以通過"類.類屬性"來訪問。

    • 兩者訪問形式:主程序中,實例屬性只能通過對象名訪問;而類屬性能夠通過類名訪問,也可以通過對象名訪問。

  • 對於公有成員(方法和變量),可以公開使用,既可以在類內部訪問,也可以在類外部訪問。

  • 對於私有成員(方法和變量),只能在類內部使用,但也可以通過特殊的方法進行訪問,即"對象名._類名+私有成員",book._Book__types

    • 兩者表現形式:類屬性定義時,如果以兩個短下滑線"__"開頭則表示是私有屬性,否則就是公有屬性。例如,self.__size = s為私有屬性,而self.price = money為公有屬性。
  • 私有方法:以兩個下滑線"__"開始,不能通過對象名直接調用。只能在屬於對象的方法中通過self調用。例如,self._namemethod

  • 公有方法:通過對象名直接調用。例如,a.printLcs

  • 靜態方法:可以通過類名和對象名調用,但不能直接訪問屬於對象的成員,只能訪問屬於類的成員。

參考:
1、https://blog.csdn.net/lydia_liumeijie/article/details/80391531

2、菜鳥教程:http://www.runoob.com/python3/python3-class.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM