#python #class #oop
#python #класс #ооп
Вопрос:
Мне нужно подключить три класса, чтобы некоторые из них могли использовать методы других.
Здесь я показываю пример того, как работают классы. Как видно, данные вводятся по всему Data
классу и обрабатываются Statistics
Plotting
классами и .
class Data (object): # This class read a file and creates a DataFrame object
def __init__(input_data):
def Tool:
# [df managing operations]
return df
class Statistics: # This class use Data dataframe and manipulate it.
def mean(df):
return scalar
class Plotting: # This class plot Data dataframe in function of Statistics outputs
def with_colors (df, scalar):
Комментарии:
1. Пожалуйста, обновите свой вопрос кодом, который вы пробовали.
2. похоже, что они могут быть функциями с аргументами (например:
colors=False
) в одном классе3. Это полная программа @quamrana, она была бы нечитаемой
4. Да, функции классов используют множество аргументов, но все классы являются классами объектов. Ни один из них не является дочерним.
5. почему вы не можете просто иметь все функции в одном классе? все они работают с одним и тем же фреймом данных
Ответ №1:
Я не думаю Plotting
Statistics
и не сопоставляю хорошо классы или экземпляры. Они больше похожи на библиотеки функций. В противном случае вы создадите экземпляр single Plotting
и single Statistics
просто для вызова их методов для чего-то другого.
Похоже, вы сгруппировали свои служебные методы в классы и в итоге получили слишком много методов. Это просто проблема организации / раздела.
Если вы хотите, вы можете просто сделать их модулями, определить там функции, импортировать соответствующие функции в основную программу и передать этим функциям необходимые им данные в качестве аргументов.
Также похоже, что вы просто создаете объект, подобный фрейму данных, и добавляете к нему методы. И чтение данных откуда-то выглядит как просто еще одна служебная функция.
Хотя ничто не мешает вам делать эти вещи, включая наследование от dataframe для создания собственной расширенной версии, я думаю, вам лучше использовать объекты df как есть и передавать их служебным функциям.
Комментарии:
1. Вау, спасибо тебе большое @progmatico. Я думаю, что сделаю это.
Ответ №2:
Попробуйте передать Data
объект в Statistics
и в Plotting
методы классов.