我不确定这到底意味着什么或如何使用,但是在功能方面我遇到了这个功能。我能够动态地向函数添加属性。有人可以帮助我了解此功能的用途以及它是如何发生的吗?我的意思是毕竟它是一个函数名,我们如何动态为其添加属性?

def impossible():
    print "Adding a bool"

impossible.enabled = True
# i was able to just do this. And this is a function, how does this add up?

print(impossible.enabled) # No attribute error. o/p --> True

最佳答案

在python函数中,对象是对象,它们具有各种内部属性,它们也可以具有__dict__属性,并且像其他任何对象一样,__dict__中的任何内容都是该对象的变量。在impossible.enabled之后

def impossible():
    print "Adding a bool"

print(impossible.__dict__) #  {}
impossible.enabled = True
print(impossible.__dict__) #  {'enabled': True}


这不会改变函数,因为在大多数情况下__dict__为空,并且函数中没有特殊值。
实际上,它有点有用,因为您可以在函数中使用它来存储静态变量,而不会使全局名称混乱

关于python - 将属性附加到python中的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49839332/

10-13 08:19