2 25python屬性和方法私有化

2022-05-21 04:35:33 字數 2378 閱讀 5366

#保護物件的屬性

#如果有乙個物件,當需要對 其進行修改屬性時, 有2種方法

# 物件名 屬性名 = 資料——— >直接修改

# 物件名 方法名()——————>間接修改

#為了更好的儲存屬性安全,即不能隨意修改 ,一般的處理方式為:

#*將屬性定義為私有屬性(兩個下劃線開頭)

#*新增乙個可以通用的方法,供呼叫

#此處需再看看相關資料

#

屬性賦值:

class

user:

def__str__

(self):

return

'使用者名為:%s,密碼為:%s

'%(self.username,self.password)

u1 =user()

u1.username = '張三'

u1.password = '

1563535

'print

(u1)

#output :使用者名為:張三,密碼為:1563535 這裡只要賦值就可以直接修改資料

#為了限定password的字元長度

class

usernew:

def__str__

(self):

return

'使用者名為:%s,密碼為:%s

' %(self.username, self.password)

defset_pw(self,pw):

if len(pw)>6:

self.password =pw

else

:

print('

密碼不足六位')

'''u2 = usernew()

u2.username = '李四'

u2.set_pw('1535')

print(u2)

'''#

output:密碼不足六位.程式錯誤找不到password

u3 =usernew()

u3.username = '王五'

u3.set_pw(

'12456222485

')#當u3不呼叫set_pw時,u3.password = '123'時,程式能正常執行,不會報錯,由此引出關於物件的隱藏屬性的方法

print

(u3)

#output:使用者名為:王五,密碼為:12456222485

#為了更好的儲存屬性的安全,使用self.__pw

class

usertest:

def__init__

(self,pw):

if len(pw)>= 6:

self.

__pw =pw

else

:

print('

%s不能作為密碼

'%pw) #

能執行def

__str__

(self):

return

'密碼為:%s

'%(self.__pw)#

u4 = usertest('123')

#u5 = usertest('123456')

#print(u4,u5)

#output: 報錯:'usertest' object has no attribute '_usertest__pw'

#當對u5的__pw進行賦值時依舊報錯u5.__pw()='2211633',因為外部不能訪問到__pw()

#需要通過函式返回值的方式獲得__pw的值

class

usertest2:

def__init__

(self,name,pw):

self.name =name

if len(pw)>=6:

self.

__pw =pw

else

:

print('

%s不能作為密碼')

def__str__

(self):

self.

__take_pw

()

return

'使用者名為:%s,密碼為:%s

'%(self.name ,self__pw)

defget_pw(self):

return self.__pw

def__take_pw

(self):

print(self.__pw

)u6 = usertest2('

趙六','

153525')

print

(u6.get_pw())

print(u6)

python中類方法 靜態方法 私有屬性和私有方法

一 類方法 class toy object 1.使用賦值語句定義類屬性,記錄所有玩具的數量 count 0 def init self,name self.name name 讓類屬性 1 toy.count 1 classmethod def show toy count cls print 玩...

Python屬性和方法

類屬性 類屬性,直接在類中定義的屬性是類屬性,類屬性可以通過類或類的例項訪問到,但是類屬性只能通過類物件來修改,無法通過例項物件修改 例項屬性 例項屬性,通過例項物件新增的屬性屬於例項屬性,例項屬性只能通過例項物件來訪問和修改,類物件無法訪問修改 類方法 例項方法 靜態方法 定義乙個類 class ...

python之方法和屬性

構造方法 init self class bird def init self self.hunger true def eat self if self.hunger print aaaah.self.hunger false else print no.thanks b bird print b...