2016-04-21 11 views
2

So ist die Klasse die ich angelegt habe wie folgt aussieht:Wie helfen Funktionen in meinem Code organisieren

class DataProcessor(object): 

    data1 
    data2 
    data3 

    def process_data(self): 
     self.process_data1_inOneWay() 
     self.process_data2_inAnotherWay() 
     self.process_data3_inADifferentWay() 

Die Verarbeitungsaufgabe besteht aus Teilen und meine Frage ist: , was der richtige Ort ist, denjenigen zu helfen zu definieren, Funktionen. Ich habe nicht das Gefühl, dass sie Teil der DataProcessor Klasse sein sollten, denn process_data ist die einzige Methode, die sie verwendet. Ich habe überlegt, eine innere Klasse zu definieren, aber ich habe gelesen, dass ihre Verwendung nicht wirklich gefördert wird. Ich habe auch Lambdas betrachtet, aber diese Idee wegen ihrer eingeschränkten Funktionalität abgelehnt. Oder vielleicht sollte ich den ganzen Code in process_data Methode stecken und nicht in kleinere Teile aufteilen.

Antwort

5

ich sie gerade setzen würde in die Klasse und geben Sie ihnen einen schwachen "internen Gebrauch" Indikator.

Gemäß PEP8 sollten die Namen dieser Methoden einen führenden Unterstrich haben: _process_data1_someway().

Solange es leicht ersichtlich ist, was ihre Rolle/beabsichtigte Sichtbarkeit nur aus dem Lesen der Klassendefinition ist, würde ich mir nicht zu viele Gedanken darüber machen.

3

Ich würde halten ist einfach und platzieren Sie die Helfer in der Klasse; Es ist wahrscheinlich, dass ein Leser Ihres Codes davon ausgehen wird, sie zu finden. Wie folgt:

class DataProcessor(object): 

    data1 
    data2 
    data3 

    def process_data(self): 
     self._process_data1_inOneWay() 
     self._process_data2_inAnotherWay() 
     self._process_data3_inADifferentWay() 

    def _process_data1_inOneWay(self): 
     pass 

    def _process_data2_inAnotherWay(self): 
     pass 

    def _process_data3_inADifferentWay(self): 
     pass 

Bitte beachten Sie die Verwendung von einem Unterstrich Präfix zu benachrichtigen, dass diese Verfahren nur intern verwendet werden (wie Sie bereits erwähnt sie von einem Punkt genannt wurden nur)