Python046--魔法方法:描述符
Posted frankruby
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python046--魔法方法:描述符相关的知识,希望对你有一定的参考价值。
一、描述符的定义:
描述符就是将特殊类型的类的实例指派给另外一个类的属性
1、举例:
特殊类型的类要实现以下三个方法中的其中一个或者全部实现
* __get__(self,instance,owner)
--用于访问属性,它返回属性的值
* __set__(self,instance,value)
--用于设置属性,不返回任何内容
* __delete__(self,instance)
--控制删除操作,不返回任何内容
class MyDecriptor: def __get__(self,instance,owner): #打印查看描述符的get,set,delete方法中各个参数的含义 print("getting...",self,instance,owner) def __set__(self,instance,value): print("setting...",self,instance,value) def __delete__(self,instance): print("deleteing...",self,instance) class Test: #把特殊类MyDecriptor的实例指派给Test类的x属性 x = MyDecriptor() 执行结果: >>> test = Test() >>> test.x getting... <__main__.MyDecriptor object at 0x10a2186d8> <__main__.Test object at 0x10a208f60> <class ‘__main__.Test‘> >>> test <__main__.Test object at 0x10a208f60> >>> Test <class ‘__main__.Test‘> ‘‘‘ |--由打印出来的getting...,可以看出来,参数self是MyDecriptor的对象(<__main__.MyDecriptor object at 0x10a2186d8>) |--参数instance是Test的对象(<__main__.Test object at 0x10a208f60>) |--参数owner是Test的本类自己(<class ‘__main__.Test‘>) |--具体可由对象test打印出来的内容,和Test类打印出来的内容得到验证 |--set和delete同理 ‘‘‘ >>> test.x = "X-man" setting... <__main__.MyDecriptor object at 0x10a2186d8> <__main__.Test object at 0x10a208f60> X-man >>> del test.x deleteing... <__main__.MyDecriptor object at 0x10a2186d8> <__main__.Test object at 0x10a208f60> >>>
2、二次举例:实现property
以上是关于Python046--魔法方法:描述符的主要内容,如果未能解决你的问题,请参考以下文章
Python3 魔法方法:描述符(property的实现原理)