是否可以获取子类的名称?例如:
class Foo:
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
将打印:< type 'instance' >
我正在寻找获得"SubFoo"
的方法。
我知道你可以做isinstance
,但我不知道该班的名字是先验的,所以这对我不起作用。
答案 0 :(得分:13)
你可以使用
SubFoo().__class__.__name__
这可能是偏离主题的,因为它为您提供了一个类名:)
答案 1 :(得分:8)
#!/usr/bin/python
class Foo(object):
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
来自object
的子类为你提供了新式的课程(不再那么新了 - python 2.2!)无论何时你想要使用self属性,你都会获得更多的收益。你从对象的子类。 Python的文档...... new style classes。从历史上看,Python为了向后兼容而离开了旧式方式Foo()
。但是,这是很久以前的事了。没有太多理由不从对象继承。
答案 2 :(得分:2)
使用新式课程时效果会好很多。
class Foo(object):
....
答案 3 :(得分:1)
SubFoo.__name__
父母:[cls.__name__ for cls in SubFoo.__bases__]