Я хотел бы организовать свой код таким образом, чтобы я мог определять методы, которые можно классифицировать в зависимости от их назначения. Мои решения используют подклассы следующим образом:
import matplotlib.pyplot as plt
class Portfolio:
def __init__(self):
self.x = [1,2,3]
self.y = [4,6,2]
class Plotting:
def red(x_value,y_value):
plt.scatter(x=x_value,y=y_value,color="red")
plt.show()
def green(x_value,y_value):
plt.scatter(x=x_value,y=y_value,color="green")
plt.show()
class Analysis:
def min_max_x(x_value):
print([min(x_value),max(x_value)])
def min_max_y(y_value):
print([min(y_value), max(y_value)])
# Creates Portfolio object
pf = Portfolio()
# Plotting
pf.Plotting.red(x_value=pf.x,y_value=pf.y)
pf.Plotting.green(x_value=pf.x,y_value=pf.y)
# Analysis
pf.Analysis.min_max_x(x_value=pf.x)
pf.Analysis.min_max_y(y_value=pf.y)
Несмотря на то, что это работает, я не очень доволен по следующим причинам:
- Я должен передать аргумент методу (например, 'pf.x'). Кажется, это не очень питонично, так как я вызываю метод из 'pf'. Таким образом, я в основном получаю доступ к 'pf' дважды.
- Мой настоящий код намного длиннее, и этот подход потребовал бы от меня записи каждой строки кода в классе 'Portfolio' и, следовательно, в одном файле. Слишком сложно ориентироваться.
Итак, мой самый вопрос: как мы можем построить класс с методами, которые организованы тематически (например, построение графиков, анализ и т. Д.), Как в моем примере, но без необходимости передавать аргументы. Большое спасибо.