例如,我想编写一个程序将数据从DBF文件导入数据库。我编译了算法。首先,我将DBF文件转换为CSV文件,然后将CSV文件转换为Pandas Dataframe。然后我将数据从Pandas Dataframe导入数据库。因此,算法的每个步骤都是一个独立的子程序,可以独立于其他步骤工作。
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
我是否正确编写了代码?或者有必要以某种方式以另一种方式编写一个基本程序的类?
答案 0 :(得分: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"""
...
通过这种方式,您不需要设置类实例,并且可以轻松地将返回值从一个函数直接传递到工作流中的下一个函数。