__name__属性的其他用法

时间:2010-12-03 22:48:11

标签: python

我通过在线阅读Dive Into Python来学习Python,在第2章中我看到你可以使用__name__属性进行测试,所以我想知道,是否有人知道其他用途这个属性?感谢

2 个答案:

答案 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)

调试时非常有用。在编写框架(或任何其他高度通用的软件)时,您可以使用名称轻松调试,以了解传递的内容。