标识正在运行代码的类

时间:2013-03-05 12:21:52

标签: python metaprogramming

在下面的代码中,有人可以告诉我,在标记为#whereami(第3行)的行,我如何识别我现在在类Person中而不是在实例化的Programmer对象中。

理想情况下,我想要一个类/类型对象,但如果无法返回,则类名“Person”将会执行。

class Person(object):
    def opinion(self):
        #whereami
        print "Time for a cup of tea"

class Programmer(Person):
    def opinion(self):
        super(Programmer, self).opinion()
        print "There is no spoon"

if '__name__' == '__main__':
    programmer = Programmer()
    programmer.opinion()

2 个答案:

答案 0 :(得分:1)

尝试插入以下行

className=self.__class__.__name__

className变量将当前类名的值作为字符串

答案 1 :(得分:0)

使用

type('object')

使用Python3.2查看下面的示例

class Person(object):
    def opinion(self):
        print(type(self))
        print ("Time for a cup of tea")

class Programmer(Person):
    def opinion(self):
        super(Programmer, self).opinion()
        print ("There is no spoon")

if '__name__' == '__main__':
    programmer = Programmer()
    programmer.opinion()

p = Person()
p.opinion()
print('\n')
pg = Programmer()
pg.opinion()

<强>结果

<class '__main__.Person'>
Time for a cup of tea


<class '__main__.Programmer'>
Time for a cup of tea
There is no spoon

你可以告诉第一个结果是由“人”类调用的。