当一个方法依赖于另一个方法的输出时,设计一个Python类

时间:2018-04-25 17:13:42

标签: python pandas

我已经将一些数据(比如几千笔交易)导入Pandas,现在我必须对它进行一些分析。示例包括计算可变性,回归等。我正在考虑设计一个类来导入数据并将数据存储在对象中,然后在其上调用方法。然而,我认为可以作为方法编写的许多目标是相互依赖的。换句话说,method3需要method2的输出,method1本身需要data.method3()的输出。显然,我无法直接致电p.foo()

我如何设计这样的课程?

更大的问题:我是否应该设计一个类或只为这样的问题编写程序代码?

2 个答案:

答案 0 :(得分:0)

类方法调用其他类方法完全没问题,因此可以使用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())

使用OOP与函数式编程是一个设计决策,两种样式都有效,所以如果需要,可以使用一个类。请注意,您还可以存储例如变量中的method1然后当运行method2时,它使用method1的预先计算结果(如果可用)。

答案 1 :(得分:0)

您只需从依赖方法调用依赖方法即可。请看下面这个简单的例子:

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

关于你更大的问题&gt; “更大的问题:我是否应该设计一个类或只为这样的问题编写程序代码?”

查看when-should-i-be-using-classes-in-python