gpt4 book ai didi

python 的函数属性 : getting a list/dict of all assigned attributes

转载 作者:行者123 更新时间:2023-11-28 19:37:39 25 4
gpt4 key购买 nike

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

例如:

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() 似乎可以解决问题,但您必须过滤您的属性。如果您事先不知道属性名称,那就有点不方便了。

如果我可以分配一个属性,那么必须..应该有一种从内部访问其目录的方法。

更新:

我完全忘记了在尝试访问属性之前实际调用/调用 = 实例化函数。 ... 我的错! - 对不起,谢谢你的答案;-)

当然我尝试了 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 的函数属性 : getting a list/dict of all assigned attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13234792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com