【问题标题】:Designing a Python class when one method depends on the output of another method当一种方法依赖于另一种方法的输出时设计 Python 类
【发布时间】:2018-04-25 17:13:41
【问题描述】:

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

如何设计这样的类?

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    类方法调用其他类方法完全没问题,所以你可以让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的预计算结果(如果可用)。

    【讨论】:

      【解决方案2】:

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

      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
      

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

      看看这个when-should-i-be-using-classes-in-python

      【讨论】:

      • 虽然这是正确的方向,但这不是类定义,也不涉及方法......
      • 我了解,但用户不确定是否应该使用类。所以我关于如何处理函数之间的依赖关系。这同样适用于类方法。
      猜你喜欢
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      相关资源
      最近更新 更多