Python類總結 封裝 私有屬性,方法

2022-08-24 21:18:10 字數 1798 閱讀 3103

class person:

def __init__(self, name, password):

__key = 123 #靜態私有屬性

self.name = name

self.__password = password #在類的內部定義私有屬性,會轉換為_person__password

def get_pwd(self): #通過公有方法get_pwd封裝私有屬性

return self.__password #返回__私有屬性

def __set_pwd(self):#私有方法

print('set new password')

def changepwd(self):

self.__set_pwd()

#所有的私有,都是在變數左邊加雙下劃線

#所有的私有,都不能在類的外部使用

#物件的私有屬性

#類的私有方法

#類中私有的靜態屬性

alex = person('alex', 'alex3714')

# print(alex.__password)#外部不可呼叫

print(alex.__dict__)

print(alex.get_pwd())#讀取共用方法調取私有屬性

class room:

def __init__(self,name, length, width):

self.__name = name

self.__length = length #私有屬性

self.__width = width

def get_name(self):

return self.__name

def set_name(self,newname):#使用set方法可以規範變數的屬性

if type(newname) is str and newname.isdigit() == false:#設定規範類的變數不可以是數字

self.__name = newname

else:

print('不合法的姓名')

return self.__name

def area(self):

return self.__length*self.__width #返回私有屬性計算值

jin = room('金老闆', 2,1)

print(jin.area())

jin.name ='二哥'

print(jin.name)

jin.set_name('2') #傳set_name數字則不修改

print(jin.get_name())

jin.set_name('東東') #傳set_name字元則修改

print(jin.get_name())

>>>2二哥

不合法的姓名

金老闆東東

class foo:

__key = '123' #變形為_foo__key

class son(foo):

print(foo.__key) #變形為_son__key何父類不相同

>>>

file "c:/users/jwang2/pycharmprojects/playpy/demo/s9-day25-封裝.py", line 62, in son

print(foo.__key)

attributeerror: type object 'foo' has no attribute '_son__key'

python類私有屬性

python中沒有private關鍵字,想要建立乙個類私有的變數需要通過命名規則來實現 在變數名之前加兩個下劃線 name,則在類外部就不能直接通過例項.name訪問,具體原理python編譯器將其命名修改為了 類名 name,通過其實例項.類名 name還是可以訪問 class test obje...

私有屬性與封裝

用 建構函式來建立物件 function dog var huzi new dog huzi.bark 汪汪 alert huzi.leg 4 上面並沒有完成物件導向的 封裝 所謂封裝 就要封閉一部分,外界無法訪問 開放一部分,通過開放部分間接訪問私有部分 下面使用 閉包來完成js物件導向之私有屬性...

Python 定義類的私有屬性

私有屬性變數不能從物件外部訪問,而只能通過訪問器方法 class secretive def inaccessible self print bet you can t see me def accessible self print the secret message is self.inacc...