关于python术语的澄清

时间:2018-04-18 14:02:38

标签: python terminology

我写了一段代码:

def Greeting():
    return "Hello there!"
Greeting.help = "This function will say hello"

print(Greeting())
print(Greeting.help)

我不确定Greeting.help会被称为什么......我已经尝试过搜索,但我觉得我使用了错误的搜索字词。

2 个答案:

答案 0 :(得分:3)

您已在对象Greeting上设置属性。这就是相应函数被称为getattrsetattr的原因。

>>> getattr(Greeting, 'help')
'This function will say hello'
>>> setattr(Greeting, 'foo', 'bar')

这些属性存储在字典Greeting.__dict__中,也可以vars(Greeting)访问。

>>> Greeting.__dict__
{'foo': 'bar', 'help': 'This function will say hello'}
>>> vars(Greeting)
{'foo': 'bar', 'help': 'This function will say hello'}

请注意,设置help / docstring的惯用方法如下:

>>> def foo():
...     'help text'
...     pass
...
>>> foo.__doc__
'help text'

答案 1 :(得分:2)

您已设置对象的单个属性(在本例中为函数对象)。

如果你想记录它,那么更传统的方法是设置docstring:

def Greeting():
    """ This function will say hello """
    return "Hello there!"

然后可以通过help(Greeting)查看:

>>> def Greeting():
...     """ This function will say hello """
...     return "Hello there!"
...
>>> Greeting.__doc__
' This function will say hello '
>>> help(Greeting)

打印:

Help on function Greeting in module __main__:

Greeting()
    This function will say hello
(END)