Разработка класса Python, когда один метод зависит от вывода другого метода - PullRequest
0 голосов
/ 25 апреля 2018

Я импортировал некоторые данные (скажем, несколько тысяч транзакций) в Pandas, и теперь я должен выполнить их анализ.Примеры включают вычисление изменчивости, регрессии и т. Д. Я думал о разработке класса для импорта и хранения данных в объекте, а затем о вызове методов для него.Однако многие цели, которые, как я думал, я мог бы написать как методы, являются взаимозависимыми.Другими словами, method3 требует вывода из method2, который сам по себе требует вывода из method1.Очевидно, я не могу позвонить data.method3() напрямую.

Как мне спроектировать такой класс?

Более сложный вопрос: должен ли я даже разработать класс или просто написать процедурный код для такой проблемы?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы можете просто вызвать метод зависимости из зависимого метода.См. Этот простой пример ниже:

def is_integer(n):
    # First Function, no dependency
    """ Validate is Integer"""
    return isinstance(n, int)


def sqaure(n):
    # Depends on "is_integer"
    if is_integer(n):
        return n * n
    return "Not a valid integer: '{}'".format(n)

def print_my_square(n):
    # Depends on "square"
    print sqaure(n)

Вывод:

>>> print_my_square('n')
Not a valid integer: 'n'
>>> print_my_square(99)
9801

Относительно вашего более крупного вопроса> «Более важный вопрос: должен ли я даже разработать класс или просто написатьпроцедурный код для такой проблемы? "

Проверьте это когда я должен использовать классы в python

0 голосов
/ 25 апреля 2018

Это нормально для методов класса, чтобы вызывать другие методы класса, так что вы можете иметь метод method2 вызывать method1 и так далее. Рассмотрим этот пример:

class MyDataHandler(object):
    def __init__(self, val):
        self.val = val

    def method1(self):
        return(2 * self.val)

    def method2(self):
        return(self.method1() + 1)

if __name__ == '__main__':
    data_handler = MyDataHandler(2)
    print(data_handler.method2())

Использование ООП в сравнении с функциональным программированием является дизайнерским решением, и оба стиля работают, поэтому используйте класс, если хотите. Обратите внимание, что вы также можете сохранить выходные данные, например, method1 в переменной, а затем при запуске method2 использовать предварительно вычисленные результаты method1, если они доступны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...