免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2487 | 回复: 6
打印 上一主题 下一主题

求高人详解一下python类中的 descriptor机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-26 15:59 |只看该作者 |倒序浏览
如题,请达人来分享下自己的见解~

论坛徽章:
0
2 [报告]
发表于 2011-05-26 16:59 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2011-05-26 17:07 |只看该作者
感谢楼上,不过我已经找到了
http://users.rcn.com/python/download/Descriptor.htm
还是这个讲解的不错

论坛徽章:
0
4 [报告]
发表于 2011-05-26 17:19 |只看该作者
回复 3# ccporxy
感谢楼上,不过我已经找到了

还是这个讲解的不错
ccporxy 发表于 2011-05-26 17:07

这个太老了,2.6开始可以使用装饰器语法,这里没有。

论坛徽章:
0
5 [报告]
发表于 2011-05-26 17:24 |只看该作者
本帖最后由 ccporxy 于 2011-05-26 17:30 编辑

是很老但是讲的很深入, 装饰器用的技巧和descriptor是不同的

@func
def fun():
    pass

@staticmethod
def fun():
    pass
class A(object):
    @classmethod
    def fun(cls,*args,**kwargs):
        pass

装饰性使用的技巧是闭包,是面向函数的实现。
而descriptor主要是为了类而使用的技巧

论坛徽章:
0
6 [报告]
发表于 2011-05-26 17:35 |只看该作者
回复 5# ccporxy
考   风马牛不相及嘛。
我是说实现描述符2.6之前要么自己定义  __get__, __set__要么用property写成这样x = property(getx, setx, delx, "I'm the 'x' property.")。
2.6开始你可以用装饰器的语法来写property,看起来比较酷。
  1. class C(object):
  2.     def __init__(self):
  3.         self._x = None
  4.     @property
  5.     def x(self):
  6.         """I'm the 'x' property."""
  7.         return self._x
  8.     @x.setter
  9.     def x(self, value):
  10.         self._x = value
  11.     @x.deleter
  12.     def x(self):
  13.         del self._x
复制代码

论坛徽章:
0
7 [报告]
发表于 2011-05-26 23:50 |只看该作者
呵呵,装饰器是decorator...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP