Полиморфизм при вызове статического метода из статического метода в Python - PullRequest
0 голосов
/ 03 июня 2019

В настоящее время я работаю над проблемой, когда многие классы будут основаны на базовом классе.Я хочу, чтобы эти классы унаследовали статическую функцию от базового класса, который в свою очередь вызывает статическую функцию.Эта вторая статическая функция, однако, будет определена для каждого класса.

Простой пример будет:

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 голосов
/ 03 июня 2019

Вместо этого сделайте fn2 метод класса, чтобы он имел доступ к классу, используемому для вызова метода:

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