纯粹出于好奇:是否有一种简单的方法(不超过两行代码)可以访问函数的字典/已分配属性列表(从该函数内部)?
例如。:

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()似乎起到了作用,但你必须过滤你的属性。如果你事先不知道属性名,那就有点不方便了。
如果我可以指定一个属性,那么必须。。应该是一种从内部访问其目录的方法。
更新:
在尝试访问属性之前,我完全忘记实际调用/调用=实例化函数。... 我的错!-答案是sry和thx;-)
很自然地,我尝试了func.__dict__dir(func),但是在这样做之前没有实例化函数对象。。。在我最初的测试中,我从函数内部定义了一个属性,然后没有调用函数,而是试图从外部范围访问函数属性——这自然失败了!

最佳答案

与其使用func.__dict__,不如使用vars()

>>> def func():
...     pass
...
>>> func.a = 19
>>>
>>> func.__dict__
{'a': 19}
>>> vars(func)
{'a': 19}
>>> vars(func) is func.__dict__
True

下划线更少。

关于python - python的功能属性:获取所有已分配属性的列表/字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13234792/

10-11 22:32
查看更多