如何从python中的@staticmethod函数中找出调用我的类?

如何从python中的@staticmethod函数中找出调用我的类?,python,inheritance,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() 为此,必须使用@classme

当调用静态方法时,有没有办法让它知道从哪个子类调用它

我知道这是非常不面向对象的,在一个编写良好的程序中可能永远不会有用,但我想知道该语言是否提供了它

例如:

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()
为此,必须使用@classmethod而不是@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()
输出:

A B

为此,必须使用@classmethod而不是@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()
输出:

A B