Наследование от двух классов с методами с одинаковыми именами - как сохранить оба метода? - PullRequest
0 голосов
/ 19 сентября 2019

Допустим, у меня есть следующая структура класса

import abc

class Likelihood(object):
  __metaclass__ = abc.ABCMeta

  @abc.abstractmethod
  def stat(self):
    pass

  @abc.abstractmethod
  def pvalue(self):
    pass

class B(Likelihood):
  def stat(self):
    return ('stat from B') 

  def pvalue(self):
    which_stat = self.stat()
    return ('pvalue from B using ' + which_stat)

class C(Likelihood):
  def stat(self):
    return ('stat from C')

  def pvalue(self):
    which_stat = self.stat()
    return ('pvalue from C using ' + which_stat)

И я хочу создать новый класс D, который будет иметь метод pvalue из B и C , но используетсвой собственный stat метод.Ниже приведен скелет с желаемым выводом методов:

class D (B,C):
  def stat(self):
    return ('stat from D')

  def pvalue_from_c(self):
    # Desired output is 'pvalue from C using stat from D'

  def pvalue_from_b(self):
    # Desired output is 'pvalue from B using stat from D'

Какой самый питонский способ сделать это?

...