首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否获取子类名称?

是否获取子类名称?
EN

Stack Overflow用户
提问于 2010-07-23 08:50:04
回答 4查看 14K关注 0票数 23

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

代码语言:javascript
复制
class Foo:
    def bar(self):
        print type(self)

class SubFoo(Foo):
    pass

SubFoo().bar()

将打印:< type 'instance' >

我在找一个能找到"SubFoo"的方法。

我知道你可以做isinstance,但是我事先不知道类的名字,所以这对我不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-23 09:04:47

代码语言:javascript
复制
#!/usr/bin/python
class Foo(object):
  def bar(self):
    print type(self)

class SubFoo(Foo):
  pass

SubFoo().bar()

object派生的子类化为您提供了新样式的类(这些类不再是那么新了--Python2.2!)任何时候,如果你想使用self属性,如果你从object中子类,你会得到更多的东西。Python的文档... new style classes。在历史上,Python为了向后兼容而离开了老式的方式Foo()。但是,这是很久以前的事了。再也没有什么理由不从object中子类了。

票数 11
EN

Stack Overflow用户

发布于 2010-07-23 08:54:51

您可以使用

代码语言:javascript
复制
SubFoo().__class__.__name__

这可能是离题的,因为它给出了一个类名:)

票数 16
EN

Stack Overflow用户

发布于 2010-07-23 08:52:04

当您使用新样式的类时,它会工作得更好。

代码语言:javascript
复制
class Foo(object):
  ....
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3314627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档