首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python的函数-属性:获取所有赋值属性的列表/数据

python的函数-属性:获取所有赋值属性的列表/数据
EN

Stack Overflow用户
提问于 2012-11-05 15:06:05
回答 3查看 172关注 0票数 2

出于纯粹的好奇:是否有一种简单的方法(不超过两行代码)来访问一个函数的指定属性的字典/列表(在该函数中)?

例如:

代码语言:javascript
复制
def func(*args):
    print("# of arguments = {0} ".format(len(args)))       # normal arguments
    print("# of attributes = {0}".format(len(func_attrs))) # function-attributes

func()

func.func_attr_1 = 'How do i get all attributes from within the associated function?'
func.func_attr_2 = 'How do i get all attributes from within the associated function?'

因为函数是可调用的对象,所以可以为它们提供属性,但是似乎没有一种方法可以轻松地访问这些属性的列表。

locals()globals()没有帮助。dir()似乎做到了这一点,但您必须过滤属性。如果你事先不知道属性名,那就有点不方便了。

如果我能分配一个属性,必须..。应该是从内部访问他们的目录的一种方式。

更新

在尝试访问属性之前,我完全忘记了实际调用/invoke=实例化函数。..。我的错!-为答案而努力;-)

当然,我尝试了func.__dict__dir(func),但是在这样做之前没有实例化函数对象.在我最初的测试中,我最初从函数内部定义了一个属性,然后没有调用函数,而是尝试从外部范围访问函数--属性--当然失败了!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-05 15:19:59

与其使用func.__dict__,我认为使用瓦尔斯()看起来更好

代码语言:javascript
复制
>>> def func():
...     pass
... 
>>> func.a = 19
>>> 
>>> func.__dict__
{'a': 19}
>>> vars(func)
{'a': 19}
>>> vars(func) is func.__dict__
True

更少的下划线。

票数 5
EN

Stack Overflow用户

发布于 2012-11-05 15:08:28

您的意思是这样的,使用__dict__

代码语言:javascript
复制
In [11]: def foo():
   ....:     foo=1

In [12]: foo.bar=3

In [13]: foo.__dict__
Out[13]: {'bar': 3}
票数 5
EN

Stack Overflow用户

发布于 2012-11-05 15:09:53

给定函数名funcfunc.__dict__是函数的字典,它包含直接分配给函数的所有属性。然后,您可以进行成员资格测试(if foo in func.__dict__),使用for迭代字典的键,或者使用其他字典方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13234792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档