2017-07-03 112 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