从python中的静态方法调用静态方法时的多态性

时间:2019-06-02 22:46:38

标签: python oop inheritance static-methods

我目前正在研究一个问题,其中许多类将基于基类。我希望这些类从基类继承静态函数,而基类又调用静态函数。但是,将为每个类定义第二个静态函数。

一个简单的例子是:

class foo():
   @staticmethod
   def fn1(x):
      return x

   @staticmethod
   def fn2(x, y):
      return foo.fn1(x + y)

class bar(foo):
   @staticmethod
   def fn1(x):
      return 2*x

使用上面的代码bar.fn2(1, 2)返回foo.fn1(1 + 2),而我希望它返回bar.fn1(1 + 2)

是否可以在python中使用静态方法而不为每个类定义fn2?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

改为使fn2为类方法,以便它可以访问用于调用该方法的类:

@classmethod
def fn2(cls, x, y):
   return cls.fn1(x + y)