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

函数如何访问自己的属性?

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

函数如何访问自己的属性?

使函数的默认参数之一成为对函数本身的引用。

def f(self):    return self.xf.func_defaults = (f,)

用法示例:

>>> f.x = 17>>> b = f>>> del f>>> b()17

说明

原始张贴者想要一种不需要全局名称查找的解决方案。简单的解决方案

def f():    return f.x

f
在每个调用上执行不符合要求的全局变量的查找。如果
f
被删除,则功能失败。更复杂的
inspect
建议以相同的方式失败。

我们想要执行 早期绑定 并将绑定的引用存储在对象本身内。从概念上讲,以下是我们在做什么:

def f(self=f):    return self.x

在上面,

self
是局部变量,因此不执行全局查找。但是,我们无法按原样编写代码,因为
f
在尝试将默认值绑定到该代码时尚未定义
self
。相反,我们在
f
定义后设置默认值。

装饰器

这是一个简单的装饰器,可以为您完成此操作。请注意

self
,与方法不同,自变量必须排在最后,而方法排在
self
第一位。这也意味着,如果任何其他参数采用默认值,则必须提供默认值。

def self_reference(f):    f.func_defaults = f.func_defaults[:-1] + (f,)    return f@self_referencedef foo(verb, adverb='swiftly', self=None):    return '%s %s %s' % (self.subject, verb, adverb)

例:

>>> foo.subject = 'Fred'>>> bar = foo>>> del foo>>> bar('runs')'Fred runs swiftly'


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

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

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