是否可以从函数范围内访问python函数对象属性?
例如让我们
def f():
return SOMETHING
f._x = "foo"
f() # -> "foo"
现在,如果要返回_x属性内容“ foo”,则必须是什么?如果有可能(简单)
谢谢
更新:
我也想做以下工作:
g = f
del f
g() # -> "foo"
更新2:
声明不可能(如果是这种情况),以及为什么,比提供一种方法来伪造它更令人满意,例如使用不同于函数的对象
使函数的默认参数之一成为对函数本身的引用。
def f(self):
return self.x
f.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_reference
def 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'
如果我尝试调用GMail API,我会得到以下错误: 首先我生成一个代币 接下来我测试令牌 我得到一个错误400错误的请求作为回报。但如果我使用不同的范围,例如谷歌,我会得到200 ok。 我认为错误是“sub”:客户的电子邮件。我尝试在谷歌控制台中添加更多的GMail,有3封邮件是自动为项目创建的,只有来自Json的邮件返回我失败,如果尝试其他邮件,包括自动为项目创建的邮件和我自己的GMail(
问题内容: 我有一个像这样的对象: 现在,当我尝试访问键“ 0”的值时,例如: …我遇到了错误。(也许这不是正确的方法吗?) 如何访问数字键的值(如上)? 问题答案: 这应该工作: (是的替代语法。) 您会收到此错误,因为在JavaScript中,标识符不能以数字开头。 JavaScript标识符必须以字母,下划线(_)或美元符号($)开头;后续字符也可以是数字(0-9)。因为JavaScript
关于rust导入函数的问题,我的工程格式如下: src/main.rs src/api/api.rs api.rs 里有一个函数: pub async fn root() {} 问题是:我该如何在main.rs下调用这个root,我试过各种文档上的方法都不行。求助各位 知道怎么导入
问题内容: 目标是可以轻松访问任何级别的SwiftUI视图层次结构的托管窗口。目的可能有所不同- 关闭窗口,退出第一响应者,替换根视图或contentViewController。与UIKit / AppKit集成有时也需要通过窗口的路径,因此… 我在这里遇到和尝试过的 像这样的东西 或通过在每个SwiftUI视图中添加UIViewRepresentable / NSViewRepresentab
本文向大家介绍如何使用自己的原型访问JavaScript对象?,包括了如何使用自己的原型访问JavaScript对象?的使用技巧和注意事项,需要的朋友参考一下 我们可以通过使用名为“ Object.create() ”的javascript方法创建自己的原型来访问现有对象。使用此方法,我们可以将属性从现有属性继承到新创建的原型。让我们简要地讨论一下。 语法 此方法采用现有对象并创建自己的原型,以便
在Java你有很多列表函数。例如: List.size(),List.is空()... 是否有可能使我自己的函数,如List.null或空(),我怎么能做到这一点? 这会对我帮助很大。