实际上是2个问题。 1)是否有通用的方法来获取实例的类名,所以如果我有一个类
class someClass(object):
我想要一个内置的方式,给我一个字符串'someClass'
2)与功能类似。如果我有
def someFunction():
....
print builtinMethodToGetFunctionNameAsString
return
它会打印'someFunction'
我正在寻找这个的原因是,我有一些类和子类的丛林和调试我想打印我的位置,所以对于所有方法我只想添加一些东西沿着线
print 'Executing %s from %s' %(getFunctionName,getClassName)
所以我正在寻找一个知道类和函数的通用命令,这样我就可以在所有方法中复制和粘贴该行,而不必为每个方法写一个单独的行
答案 0 :(得分:6)
使用__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
答案 1 :(得分:3)
功能部分已在this SO post得到解答。代码是:
import sys
print sys._getframe().f_code.co_name
对于班级部分,请使用:A.__name__
或A().__class__.__name
(例如)