#保護物件的屬性#如果有乙個物件,當需要對 其進行修改屬性時, 有2種方法
# 物件名 屬性名 = 資料——— >直接修改
# 物件名 方法名()——————>間接修改
#為了更好的儲存屬性安全,即不能隨意修改 ,一般的處理方式為:
#*將屬性定義為私有屬性(兩個下劃線開頭)
#*新增乙個可以通用的方法,供呼叫
#此處需再看看相關資料
#屬性賦值:
class
user:
def__str__
(self):
return
'使用者名為:%s,密碼為:%s
'%(self.username,self.password)
u1 =user()
u1.username = '張三'
u1.password = '
1563535
(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'時,程式能正常執行,不會報錯,由此引出關於物件的隱藏屬性的方法
(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')
(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...