是否可以獲取子類的名稱?例如:獲取子類名?
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