获取子类名称?

Bry*_*ard 21 python

是否有可能获得子类的名称?例如:

class Foo:
    def bar(self):
        print type(self)

class SubFoo(Foo):
    pass

SubFoo().bar()
Run Code Online (Sandbox Code Playgroud)

将打印: < type 'instance' >

我正在寻找一种方法"SubFoo".

我知道你可以这样做isinstance,但我不知道该课程的名称是先验的,所以这对我不起作用.

myk*_*hal 15

您可以使用

SubFoo().__class__.__name__
Run Code Online (Sandbox Code Playgroud)

这可能是偏离主题的,因为它给你一个类名:)


nat*_*e c 9

#!/usr/bin/python
class Foo(object):
  def bar(self):
    print type(self)

class SubFoo(Foo):
  pass

SubFoo().bar()
Run Code Online (Sandbox Code Playgroud)

子类化为object你提供了新风格的类(不再那么新了 - python 2.2!)无论何时你想要使用self属性,如果从对象继承,你将获得更多的帮助.Python的文档...... 新的样式类.从历史上看,Python Foo()为了向后兼容而采用旧式方式.但是,这是很久以前的事了.没有太多理由不从对象继承.


小智 5

SubFoo.__name__

还有家长们:[cls.__name__ for cls in SubFoo.__bases__]