2017-07-03 11 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つのサブルーチンがすべて1つの共通プログラムに組み立てられるように、別のクラスを用意しています。

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

このようなプロセスのワークフローをどのように実装するのが最適でしょうか?つまり、これらの3つの方法を組み合わせる別の方法を実装する必要がありますか?入力ファイルはこのメソッドに送られます。 または、これらの3つのメソッドを特定の順序で呼び出すメソッドを '__init__'メソッド全体に置く方が良いでしょうか?入力ファイルはクラスのインスタンスに送られます。これはどのようにして最善ですか?何を考慮に入れる価値がありますか? – jazzis18

関連する問題