日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python编程系列教程第13讲——隐藏数据和封装

發布時間:2023/12/4 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python编程系列教程第13讲——隐藏数据和封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

視頻地址:http://www.56.com/u88/v_OTM5NjU0MjE.html#fromoutpvid=OTM5NjU0MjE

普及網絡安全知識,推動信息技術發展。

為祖國的網絡安全撐起一片藍天,為網絡安全愛好者構建一方家園。

歡迎來到灰帽程序員論壇,我們的網址是:http://www.hmhacker.org

論壇是以技術交流為主(非商業性質論壇,不從事任何非法入侵活動)

分享知識,分享快樂,收獲友誼,收獲財富!

大家好,我是數字雨QQ:798033502

今天給大家帶來的教程是《Python編程系列教程第13講——隱藏數據和封裝

我們看下面這樣的一個小例子。

假設:

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)

轉載于:https://www.cnblogs.com/secbook/p/3190864.html

總結

以上是生活随笔為你收集整理的Python编程系列教程第13讲——隐藏数据和封装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。