kdt*_*kdt 1 python inheritance
当调用静态方法时,有没有办法让它知道从哪个子类调用它?
(我知道这非常不合适,可能在编写得很好的程序中没用,但我想知道该语言是否提供了它)
例如:
class A(object):
@staticmethod
def foo():
print 'bar'
# *** I would like to print either 'A' or 'B' here
class B(A):
pass
A.foo()
B.foo()
Run Code Online (Sandbox Code Playgroud)
你必须使用a @classmethod而不是a @staticmethod.使用类方法,您将获得对作为第一个参数传入的类的引用:
class A(object):
@classmethod
def foo(cls):
print cls.__name__
# *** I would like to print either 'A' or 'B' here
class B(A):
pass
A.foo()
B.foo()
Run Code Online (Sandbox Code Playgroud)
输出:http://codepad.org/bW3E51r9
一个
B.