获取对象名称和函数名称

7
实际上有两个问题。 1) 是否有一种通用的方式可以获取实例的类名,以便如果我有一个类
class someClass(object):

我希望有一种内置的方式可以给我一个字符串“someClass”。
2)函数也是类似。如果我有
def someFunction():
    ....
    print builtinMethodToGetFunctionNameAsString
    return

它会打印出'someFunction'

我需要这个的原因是,我的类和子类有些混乱,为了调试,我想要打印出我现在所在的位置,因此我希望在所有方法中添加类似以下内容的代码

print 'Executing %s from %s' %(getFunctionName,getClassName)

我正在寻找一个通用的命令,它知道类和函数在哪里,这样我就可以将该行复制并粘贴到所有方法中,而不必为每个方法编写单独的行。


使用调试器怎么样? - user395760
使用.format而不是%来执行{}从{}中获取函数名称和类名 - Rafał Łużyński
2个回答

7

使用__name__属性:

类:

>>> class A:pass
>>> A.__name__
'A'
>>> A().__class__.__name__       #using an instance of that class
'A'

功能:

>>> def func():
...     print func.__name__
...     
>>> func.__name__
'func'
>>> func()
func

一种快速的处理类的方法是: ```

一个快速处理类的技巧是:

```
>>> import sys
>>> class A():
...     def func(self):
...         func_name = sys._getframe().f_code.co_name
...         class_name = self.__class__.__name__
...         print 'Executing {} from {}'.format(func_name, class_name)
...         
>>> A().func()
Executing func from A

谢谢Ashwini。对于这个函数,我正在寻找一种在不指定函数的情况下打印名称的方法。我编辑了我的问题以解释我的目的是什么。 - chrise

3

该函数部分已经在这篇Stack Overflow文章中得到回答。 代码如下:

import sys
print sys._getframe().f_code.co_name

对于类部分,请使用:A.__name__A().__class__.__name__(对于实例)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接