視頻地址:http://www.56.com/u88/v_OTM5NjU0MjE.html#fromoutpvid=OTM5NjU0MjEhtml
普及網絡安全知識,推進信息技術發展。python
爲祖國的網絡安全撐起一片藍天,爲網絡安全愛好者構建一方家園。程序員
歡迎來到灰帽程序員論壇,咱們的網址是:http://www.hmhacker.orgweb
論壇是以技術交流爲主(非商業性質論壇,不從事任何非法入侵活動)編程
分享知識,分享快樂,收穫友誼,收穫財富!安全
你們好,我是數字雨,QQ:798033502網絡
今天給你們帶來的教程是《Python編程系列教程第13講——隱藏數據和封裝》函數
咱們看下面這樣的一個小例子。spa
假設:pwa
0-10度爲冰水
11-20度爲涼水
21-60度爲溫水
61-90度爲熱水
91-100度爲開水
__author__ = 'MXi4oyu'
class Heatupwater: #定義一個燒水的類,類名首字母大寫
def __init__(self): #初始化水溫是15度
self.temperature=15
self.level="涼水"
def heatup(self):
self.temperature+=10
def setlevel(self):
if(self.temperature>=0 and self.temperature<=10):
self.level="冰水"
elif(self.temperature>10 and self.temperature<=20):
self.level="涼水"
elif(self.temperature>20 and self.temperature<=60):
self.level="溫水"
elif(self.temperature>60 and self.temperature<=90):
self.level="熱水"
else:
self.level="開水"
def waterinfo(self):
self.setlevel()
print(self.level+":"+str(self.temperature)+"℃")
if __name__=='__main__':
h1=Heatupwater()
h1.heatup()
h1.waterinfo()
for i in range(4):
h1.heatup()
h1.waterinfo()
h1.temperature=0
h1.waterinfo()
你可能已經意識到了,查看或修改對象中的屬性有兩種方法。
一種是直接給屬性賦值,例如:mywater.temprature=56
另外一種是使用咱們定義的heatup方法。那麼直接跟給temprature賦值是不合理的,好比咱們將水燒到89度,忽然賦值爲0度,這是不合理的。咱們不想讓temprature屬性被外界直接賦值,咱們想要的效果是隻有當調用heatup方法時水溫纔會變化。爲了達到這樣的效果,咱們一般使用私有屬性把數據隱藏起來。
面向對象的三大特性是封裝、繼承和多態,封裝概念的核心是:對象內部數據不該該從公共接口直接訪問,若是對象用戶想要改變對象的狀態,就要使用訪問方法和修飾方法。
Property()裝飾器函數是一個內置函數,至多可接受4個參數,一個獲取者函數,一個設置者函數,一個刪除者函數,一個docstring。
使用@property的效果與僅使用一個參數(獲取者函數)調用property()函數的效果是同樣的。
def name(self):
return self__name
name=property(name)
可是簡便起見,咱們一般是用@property裝飾器來修飾。
下面簡單的封裝下People類。
__author__ = 'MXi4oyu'
#!/usr/bin/python
#coding=utf-8
class People():
def __init__(self):
self.__name='jack'
@property
def name(self):
return self.__name
@name.setter
def name(self,value):
#咱們經過這種方式就能夠對name屬性的值進行限定
if not isinstance(value,str):
raise TypeError("姓名必須爲字符串")
else:
self.__name=value.title()
if __name__=='__main__':
p1=People()
p1.name="jack"
print(p1.name)