2017-07-03 91 views
0

例如,我想编写一个程序来将数据从DBF文件导入数据库。我编译了算法。首先,我将DBF文件转换为CSV文件,然后将CSV文件转换为Pandas Dataframe。然后,我将来自Pandas Dataframe的数据导入到数据库中。因此,算法的每一步都是独立的子程序,可以独立于其他步骤工作。Python OOP编码风格

import csv 
import dbf 
import pandas as pd 

class Dbf3ToCsv(object): 
    """Process a DBF III w/o memo file to a CSV file""" 

    def __init__(self): 
     pass 


class CsvToDataframe(object): 
    """Process a CSV file to Pandas Dataframe""" 

    def __init__(self): 
     pass 


class DataframeToDatabase(object): 
    """Process a Pandas Dataframe to a Database""" 

    def __init__(self): 
     pass 

但我有一个单独的类,其中所有3个子程序被组装成一个公共程序的基础。

class ImportDbfToDatabase(object): 
    """Import a DBF data to a database""" 

    def __init__(self): 
     pass 

我是否正确编写代码?或者有必要以某种方式以某种方式编写一个基本程序的类?

回答

2

算法的每一步都是一个独立的子程序,可以独立工作 的其他步骤

看来你只需要子程序和不需要在任何的保持状态转换。然后,你应该使用功能,而不是类:

def dbf3_to_csv(dbf3_file): 
    """Process a DBF III w/o memo file to a CSV file""" 
    ... 

def csv_to_dataframe(csv_file): 
    """Process a CSV file to Pandas Dataframe""" 
    ... 

def dataframe_to_database(df): 
    """Process a Pandas Dataframe to a Database""" 
    ... 

这样,你不需要安装类的实例,你可以很容易地从一个函数直接传递返回值到下一个功能在您的工作流程。

+0

以及如何最好地实施这样一个过程的工作流程?也就是说,是否有必要实施另一种方法来组合这三种方法?然后输入文件将被馈送到这个方法。 或者将整个过程放在'__init__'中是一种更好的方法,它将按照一定的顺序调用这3种方法?然后输入文件将被馈送到类的实例中。这最好的做法是什么?值得考虑的是什么? – jazzis18