Я пытаюсь сделать более простой интерфейс numpy, matplotlib, scipy и т. Д. Для моего курса экспериментальной физики. Я создал класс с именем E_dat, который принимает некоторые данные и неопределенности и может возвращать статистическую информацию о данных, такую ​​как максимальное, минимальное, стандартное отклонение ... это класс:

class E_Dat(object):

    def __init__(self, data, error = None, data_type = "foo"):
        self.data = np.array(data)
        self.error = np.array(error)
        self.shape = self.data.shape
        self.Mean = np.mean(data)
        self.Max = np.max(data)
        self.Min = np.min(data)
        self.STD = np.std(data)
        self.data_type = data_type

        if self.data.shape != self.error.shape and self.data_type != "foo":
            raise ValueError('data.shape y error.shape no coinciden')

        if self.data_type == "2d_plot" and self.data.ndim != 2:
            raise ValueError('data.shape no es 2d, no puede graficarse')

        if self.data_type == "hist" and self.data.ndim != 1:
            pass

    def get_data(self):
        return self.data

    def get_error(self):
        return self.error

    def get_shape(self):
        return self.shape

    def get_mean(self):
        return self.Mean

    def get_max(self):
        return self.Max

    def get_min(self):
        return self.Min

    def get_std(self):
        return self.STD

Теперь я хотел создать класс Plot для простых графиков, чтобы мне не приходилось каждый раз писать код, а класс Plot унаследовал бы свойства от класса E_Dat, i не знаю, как подойти к этому классу, потому что, например, мне понадобятся два объекта 1D E_Dat из одного и того же базового класса, и я могу унаследовать только один объект из того же класса. Могу ли я наследовать от списка объектов того же класса?

0
Agustin Caputo 6 Янв 2018 в 09:30

1 ответ

Лучший ответ

Не похоже, что здесь вам нужно наследование:

class MyPlot():

    def __init__(self, e_dat1, e_dat2):
        self.e_dat1 = e_dat1
        self.e_dat2 = e_dat2

С e_dat1 и e_dat2 двумя объектами E_Dat.

0
vinzee 6 Янв 2018 в 08:40