专栏名称: Python开发者
人生苦短,我用 Python。伯乐在线旗下账号「Python开发者」分享 Python 相关的技术文章、工具资源、精选课程、热点资讯等。
目录
相关文章推荐
Python爱好者社区  ·  生成式AI,彻底爆了! ·  23 小时前  
Python爱好者社区  ·  华为目标院校白名单(2025最新版) ·  3 天前  
Python爱好者社区  ·  强的离谱!CNN,yyds ·  昨天  
Python爱好者社区  ·  《MCP原理与实践》—— ... ·  3 天前  
51好读  ›  专栏  ›  Python开发者

Python 描述符简介

Python开发者  · 公众号  · Python  · 2016-12-06 20:45

正文

请到「今天看啥」查看全文


_name

class Person ( object ) :

name = Descriptor ()


使用这些代码并查看输出:


>>> user = Person ()

>>> user . name = 'john smith'

Setting : john smith

>>> user . name

Getting : John Smith

'John Smith'

>>> del user . name

Deleting : John Smith


通过以下方法覆盖父类的 __set__()、__get__() 和 __delete__() 方法,创建一个描述符类:


  • get 将输出 Getting

  • delete 将输出 Deleting

  • set 将输出 Setting


并在分配之前将属性值修改为标题(第一个字母大写,其他字母为小写)。这样做有助于存储和输出名称。


大写转换同样可以移动到 __get__() 方法。_value 有一个初始值,并根据 get 请求转换为标题。


使用属性类型创建描述符


虽然 清单 2 中定义的描述符是有效的且可以正常使用,但是还可以使用属性类型的方法。通过使用 property(),可以轻松地为任意属性创建可用的描述符。创建 property() 的语法是 property(fget=None, fset=None, fdel=None, doc=None),其中:


  • fget:属性获取方法

  • fset:属性设置方法

  • fdel:属性删除方法

  • doc:docstring


使用属性重写该例子,如 清单 3 所示。


清单 3. 使用属性类型创建描述符


class Person ( object ) :

def __init__ ( self ) :

self . _name = ''

def fget ( self ) :

print "Getting: %s" % self . _name

return self . _name

def fset ( self , value ) :

print "Setting: %s" % value

self . _name = value . title ()

def fdel ( self ) :

print "Deleting: %s" % self . _name

del self . _name

name = property ( fget ,







请到「今天看啥」查看全文


推荐文章
Python爱好者社区  ·  生成式AI,彻底爆了!
23 小时前
Python爱好者社区  ·  华为目标院校白名单(2025最新版)
3 天前
Python爱好者社区  ·  强的离谱!CNN,yyds
昨天
摄影图录  ·  从0开始学后期—降噪
7 年前
ppt设计学堂  ·  这个PPT技巧,学习5分钟,装逼1整年!
7 年前
北美美妆时尚控  ·  Club Monaco 全场美衣最高6.5折+额外7折
7 年前