程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python】【技能樹評測】技巧實例-說明改進和實踐【04】訪問限制

編輯:Python

前言:

面向對象的設計方法裡面,最重要的兩條,一條是代碼復用,通過繼承的權限設置進行封裝。
Python的類封裝和C++的定義類似,只是不用關鍵字。但是他的類型的定義沒有C++豐富嚴格。
CSDN的這篇視頻很簡單清晰的表現了這個設計思想。但是,視頻不方便查閱,所以,這裡重寫了一下。

Python 訪問控制

CSDN的視頻裡面給出的定義:

系統 【首尾雙下劃線】

xx

保護 【首為單下劃線】

【_xx】

私有 【首為雙下劃線】

【__xx】

私有的類屬性

class Apple():
def name(self,name):
self.__name = name
def getName(self):
return self.__name

這裡添加了一個私有的屬性name,同時設定了一訪問函數,getName去訪問他。

私有的函數(方法)

class Apple():
def __setAge(self,age):
self.__age = age
def getName(self):
return self.__name
def info(self,age):
self.__setAge(age);

和私有的類一樣,可以定義私有的方法.私有方法的調用,在類的定義內,需要給予前綴【self.】,直接調用會報錯

源碼舉例:

對應技能樹普遍不能運行的情況,自己編寫了一個范例:
【案,這個例子裡,我寫了兩個私有的屬性sex,和Married,一個私有函數__SetPrivateMarriedx】
【直接調用私有屬性,例如,源碼中,person.__sex = “男人”,並不能改變性別的屬性,仍然是女人,直到調用了我們預設的接口訪問函數SetSex,在文章的最後,我們嘗試調用私有函數,結果報錯,說明了數據訪問的權限被有效的保護了。
person.__SetPrivateMarriedx(“Yes”)】

class People():
def __init__(self,name,work,sex,Married):
self.name = name
self.work = work
self.__sex = sex
self.__Married = Married
def Spyname(self,Spyname):
self.__name = Spyname
def getName(self):
return self.__name
def SetSex(self,Sex):
self.__sex = Sex
self.__SetPrivateMarriedx("Yes")
def __SetPrivateMarriedx(self,Married):
self.__Married = Married
def show(self):
print("姓名",self.name)
print("職務",self.work)
print("性別",self.__sex)
print("婚姻",self.__Married)
person=People("普通人","good","女人","no")
person.show()
person.name = "俞敏洪"
person.work = "新東方老板"
person.__sex = "男人"
person.show()
person.SetSex("男人")
person.show()
person.__SetPrivateMarriedx("Yes")

姓名 普通人
職務 good
性別 女人
婚姻 no
姓名 俞敏洪
職務 新東方老板
性別 女人
婚姻 no
姓名 俞敏洪
職務 新東方老板
性別 男人
婚姻 Yes


AttributeError Traceback (most recent call last)
in
41 person.show()
42
—> 43 person.__SetPrivateMarriedx(“Yes”)
44

AttributeError: ‘People’ object has no attribute ‘__SetPrivateMarriedx’


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved