我通过在线阅读Dive Into Python来学习Python,在第2章中我看到你可以使用__name__
属性进行测试,所以我想知道,是否有人知道其他用途这个属性?感谢
答案 0 :(得分:3)
我曾经有一个命令行脚本文件的装饰器。
装饰师的使用方式如下:
@command
def someFunc():
# code goes here
装饰师正在做这样的事情:
commands = {}
def command(func)
commands[func.__name__] = func
return func
然后我可以这样做:
commandName = raw_input()
commands[commandName]();
哪个会从控制台读取命令的名称并调用它 - 如果它之前用装饰器标记(因此不会像input
那样进行危险的调用)。
(在我的代码中,名称来自命令行参数,而不是raw_input
。)
这很容易让我提供可以通过他们的名字访问的命令。这是其中一个用途 - 一般规则是“当你想要将自己的语义添加到函数定义的概念”时,它很有用。装饰者也是如此。
(BTW,有func.func_name
字段,使用比func.__name__
更正确,因为以__
开头的标识符应该在Python中是私有的,AFAIK - 只是一个小细节)
答案 1 :(得分:1)
调试时非常有用。在编写框架(或任何其他高度通用的软件)时,您可以使用名称轻松调试,以了解传递的内容。