python';s函数属性:获取所有指定属性的列表/目录

python';s函数属性:获取所有指定属性的列表/目录,python,Python,出于纯粹的好奇:是否有一种简单的方法(不超过两行代码)来访问函数(从该函数中)的指定属性的字典/列表 e、 g: 因为函数是可调用的对象,所以可以为它们提供属性,但是 似乎没有一种方法可以轻松访问这些属性的列表 locals()和globals()没有帮助。 dir()。如果您事先不知道属性名称,这会有点不方便 如果我可以分配一个属性,则必须。。应该是从内部访问其目录的一种方式 更新: 在尝试访问属性之前,我完全忘记了实际调用/调用=实例化函数。。。我的错sry和thx的答案;-) 当然,我尝试

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

e、 g:

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

locals()
globals()
没有帮助。
dir()。如果您事先不知道属性名称,这会有点不方便

如果我可以分配一个属性,则必须。。应该是从内部访问其目录的一种方式

更新

在尝试访问属性之前,我完全忘记了实际调用/调用=实例化函数。。。我的错sry和thx的答案;-)


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

您的意思是这样的,使用
\u dict\u

In [11]: def foo():
   ....:     foo=1

In [12]: foo.bar=3

In [13]: foo.__dict__
Out[13]: {'bar': 3}

给定函数名
func
func.\uuuu dict\uuuu
是函数的字典,其中包含直接分配给函数的所有属性。然后,您可以进行成员资格测试(
如果fuo in func.\uuu dict\uuuu
),使用
for
迭代字典的键,或者使用字典的其他方法。

而不是使用
func.\uu dict\uu
,我认为使用以下方法看起来更好:


更少的下划线。

我认为有必要问一下您为什么需要这个。100次中有99次,保持外部状态(通过属性)的函数根本不应该是函数。在这一点上,您可能应该使用一个类……正如我在一开始所说的:出于纯粹的好奇心!我非常喜欢下划线越少越好!;-)
In [11]: def foo():
   ....:     foo=1

In [12]: foo.bar=3

In [13]: foo.__dict__
Out[13]: {'bar': 3}
>>> def func():
...     pass
... 
>>> func.a = 19
>>> 
>>> func.__dict__
{'a': 19}
>>> vars(func)
{'a': 19}
>>> vars(func) is func.__dict__
True