是否可以获取子类的名称?例如:获取子类名?
class Foo:
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
会打印:< type 'instance' >
我正在寻找一种方式来获得"SubFoo"
。
我知道你可以做isinstance
,但我不知道班上的名字是否属于先验,所以这对我不起作用。
是否可以获取子类的名称?例如:获取子类名?
class Foo:
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
会打印:< type 'instance' >
我正在寻找一种方式来获得"SubFoo"
。
我知道你可以做isinstance
,但我不知道班上的名字是否属于先验,所以这对我不起作用。
#!/usr/bin/python
class Foo(object):
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
从object
子类为您提供了新的样式类(这不再是新东西了 - python 2.2)任何时候,如果你想从自己的属性中得到很多东西,那么如果你从对象中继承,你会得到更多的东西。 Python的文档... new style classes。从历史上来说,Python为了向后兼容而留下旧式的方式Foo()
。但是,这是很久以前的事了。没有太多的理由不再从对象中继承。
而'Foo()'不适用于老版本的Python。 – 2010-07-23 01:07:01
当你使用新风格的类时,它会更好。
class Foo(object):
....
SubFoo.__name__
而且父母:[cls.__name__ for cls in SubFoo.__bases__]
..至少,你可以使用'issubclass(SubFoo,富)' – mykhal 2010-07-23 01:08:40