这段代码在python中是什么意思,

2024-04-24 05:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

def a():
    print 'sss'

print getattr(a, "_decorated_function", a).__name__

它打印:

^{pr2}$

谢谢

更新

我的代码:

def a():
    w='www'

print getattr(a,'w')

但它打印:

Traceback (most recent call last):
  File "D:\zjm_code\a.py", line 8, in <module>
    print getattr(a,'w')
AttributeError: 'function' object has no attribute 'w'

Tags: 代码namemostdefwwwfunctioncalllast
3条回答

如果a有一个名为_decorated_function的属性,则返回该属性包含的内容,否则返回a。说真的,这都是in the docs。在

参见documentation for getattr in Python。它打印“a”的原因是“a”没有名为“_decorated_function”的属性,并且getattr()的第三个参数是在第一个参数没有第二个参数名称的属性时返回的默认值。因此,您的代码与:

print a.__name__

毫不奇怪,a的名称是“a”,因此可以将其作为输出。顺便说一句,我强烈建议您先搜索Python文档,然后再在StackOverflow上发布问题,因为您更有可能更快地得到答案。您可能还会发现我的Development and Coding Search自定义搜索引擎在查找相关的Python参考文档以供将来查询时使用。在

针对更新的问题

函数在声明后必须被赋予它们的属性。在

def a():
    pass

a.w = 'www'
print a.w

另一种与其他OO语言更相似的方法是使用类。此示例将生成一个静态属性:

^{pr2}$

这将使w在类a的所有实例之间共享,这在程序中作为常量最有用。如果您要处理变量并更改其值,则最好执行以下操作:

^{3}$

相关问题 更多 >