如果我定義:如何從Python中的靜態方法獲取(子)類名?
class Bar(object):
@staticmethod
def bar():
# code
pass
class Foo(Bar):
# code
pass
是否有可能爲一個函數調用Foo.bar()來確定類名富?
如果我定義:如何從Python中的靜態方法獲取(子)類名?
class Bar(object):
@staticmethod
def bar():
# code
pass
class Foo(Bar):
# code
pass
是否有可能爲一個函數調用Foo.bar()來確定類名富?
用classmethod替換static方法。當它被調用時,這個類將被傳遞,所以你可以從中獲得類名。
class Bar(object):
@classmethod
def bar(cls):
# code
print cls.__name__
class Foo(Bar):
# code
pass
>>> Bar.bar()
Bar
>>> Foo.bar()
Foo
如果您需要查找班級信息,適當的方法是使用@classmethod
。現在
class Bar(object):
@classmethod
def bar(cls):
# code
print(cls.__name__)
class Foo(Bar):
# code
pass
您bar
方法以班級爲cls
這是實際的類調用者的參考。如代碼所示,cls.__name__
是您正在查找的課程的名稱。
>>> Foo.bar()
Foo
>>> Bar.bar()
Bar
已經回答了,不過謝謝! – 2010-08-29 21:35:24
非常感謝戴夫! – 2010-08-29 21:31:05
這不回答問題。問題是如何用靜態方法來做到這一點。 – sebix 2016-11-10 21:57:11