栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

不使用setter的Python覆盖getter

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不使用setter的Python覆盖getter

使用

.getter
原始属性的装饰器:

class superhuman(human):    @human.name.getter    def name(self):        return 'super ' + self._name

请注意,您必须使用全名才能到达父类上的原始属性描述符。

示范:

>>> class superhuman(human):...     @human.name.getter...     def name(self):...         return 'super ' + self._name... >>> s = superhuman('john')>>> print s.namesuper john>>> s.name = 'jack'>>> print s.namesuper jack

property
描述对象就是 一个
对象,尽管它可以有多个与之相关的方法(吸气,setter和删除器)。现有描述符提供的
.getter
.setter
.deleter
装饰器函数将
property
返回描述符本身的副本,并替换该特定方法。

因此,在

human
基类中发生的情况是,首先使用装饰器 创建
了描述符
@property
,然后用
@name.setter
语法同时具有getter和setter的描述符替换了该描述符。之所以可行,是因为python装饰器用相同的名称替换了原始装饰函数,它基本上会执行
name=name.setter(name)
。请参见@property装饰器如何工作?有关所有工作原理的详细信息。

在您的子类中,您只需使用该技巧即可创建描述符的新副本,而只需替换getter。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号