Python3 的描述符--完整例子详细解释
2018-06-18 02:08:51来源:未知 阅读 ()
##描述符类的例子,这个例子说明了描述符和被描述符之间的关系
##摄氏温度
class Celsius(): ## 1 描述符类 def __init__(self,value = 26.0): ## 2摄氏温度值初始化赋值 self.value = float(value) ## 3 def __get__(self,instance,owner): ## 4 return self.value ## 5 def __set__(self,instance,value): ##6 self.value = float(value) ##7
##华氏温度
class Fahrenheit(): ## 8 描述符类 def __get__(self,instance,owner): ## 8.1 return instance.cel * 1.8 +32 ## 9 def __set__(self,instance,value): ## 10 instance.cel = (float(value)-32)/18 ##11
##被描述的类
class Temperature(): ## 12 被描述符类 cel = Celsius() ## 13 描述符类指派到被描述符类的对象 fah = Fahrenheit() ## 14 描述符类指派到被描述符类的对象
###输入输出结果演示
>>> temp = Temperature() #15 >>> temp.cel #16 26.0 #17 >>> temp.cel = 30 #18 >>> temp.fah #19 86.0 #20 >>> temp.fah = 100 #21 >>> temp.cel #22 3.7777777777777777 #23 >>>
###解释这一段代码,
'''首先解释这个程序代码:上边的摄氏温度和华氏温度都是描述符,都是对下边的那个被描述符类进行
描述的,描述的是他的属性cel fah 这两个属性参数。这里边的属性关系13 14 两个语句是对被描述符
的两个属性的相当于赋值相当于实例化的一个操作,那么cel 和fah 这两个被描述符的属性就相当于是
描述符Celsius()和Fahrenheit()的实例化对象了。
现在根据输入输出来解释实际操作时的一些问题,当输入15的时候,就是被描述符的一个实例化。16就
是对实例化对象也就是被描述对象的属性访问,这时注意到13这个属性又被Celsius()所描述,那么就会
回到1处,Celsius()描述符类中有2,那么就会初始化一个值,传过去就是属性的值cel.value = 26.0,
那么接下来16就是被描述对象访问属性,这个属性值是26.0.
那么18就很明显就是对被描述对象的赋值了,娜美被描述对象的cel属性就是30,此时13句就起到了作用
就是说属性cel被赋值,那么对这个属性的就进行操作了,赋值操作就是Celsius()描述符类的__set__
操作,那就是语句6,得到cel.value = 30 ,接下来输入输出结果中19句的由来就是,由于6句的处理得到
cel.value = 30,然后到8,也就是对被描述符对象的属性fah进行访问,那么就是到Fahrenheit()中的
8.1进行获取的操作,获取操作9,instance是实例化对象拥有者temp,那么9的公式就是返回temp.cel * 1.8 +32
而temp.cel 在18的时候经过操作已经赋值为30,所以这里的返回值就是计算的结果86.0,。同理接下来的输入输出
结果的内容结束的方式和上边的解释思想是一样的。
注:初学者难免会有理解不对和理解不到位的地方,还望大家批评指正,谢谢!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python基础技巧综合训练题1
下一篇:python学习笔记2
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- python3 enum模块的应用 2019-08-13
- python3 之 趣味数学题(爱因斯坦) 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash