Bedingte Klassenerstellung (Python)

7

Aus dem Lernprogramm: "Eine Klassendefinition ist eine ausführbare Anweisung."

Wird in einem Skript Folgendes empfohlen?

%Vor%     
ash 16.09.2010, 18:03
quelle

7 Antworten

9

Sie können sogar

tun %Vor%

(Beachten Sie, dass Ihr Code kleingeschriebene Klassenschlüsselwörter benötigt ...)

    
Radomir Dopieralski 16.09.2010, 18:08
quelle
5

Wenn Sie es besser mögen, können Sie jede Klassendefinition in eine separate .py-Datei schreiben und nur import , die Sie wollen. Etwas wie das Folgende:

%Vor%     
martineau 16.09.2010 23:12
quelle
5

Ja, der Code ist gültig. aber warum nicht einfach den Code ausführen, um es herauszufinden?

Sie können dies auch mit Funktionsdefinitionen tun.

    
aaronasterling 16.09.2010 18:05
quelle
4

Es ist sicherlich nicht für die Lokalisierung empfohlen, wie in Ihrem Beispiel.

Die Hauptsache ist, wie viel Code in den spezialisierten Versionen der Klasse im Vergleich zu anderen Versionen ähnlich sein wird. Wenn nur eine kleine Menge Code anders ist, oder wenn nur Daten unterschiedlich sind ("Hallo" vs "Salut"), gibt es bessere Möglichkeiten.

Ein Fall, in dem ich die bedingte Deklaration von Klassen in Betracht ziehen könnte, ist, wenn ich Funktionen auf zwei verschiedenen Betriebssystemen zur Verfügung stelle, und es ist sehr unterschiedlich, diese Funktionalität zu erhalten. Als Beispiel versuche ich vielleicht, iTunes von einem Skript zu steuern, und auf MacOS verwende ich AppleScript, um es zu fahren, aber unter Windows muss ich COM verwenden. Ich könnte eine Wrapperklasse erstellen, die der Rest meines Codes verwenden könnte, ohne sich darum zu kümmern, welches Betriebssystem verwendet wurde.

    
Russell Borogove 16.09.2010 19:08
quelle
4

Sie können auch Bedingungen für die "Deklarationen" innerhalb der Klasse definieren, da diese als Teil der Klassenkonstruktion ausgeführt werden:

%Vor%

(ireute ist hier eine Klassenvariable, die eine Membervariable begrüßt)

oder einfach nur

%Vor%

... ergibt normalerweise den gleichen Effekt.

    
greggo 16.09.2010 21:11
quelle
3

Es ist ein gültiger Code, aber in diesem Format nicht wirklich empfohlen (vorausgesetzt, der Code würde der Klassendeklaration folgen). Da wirst du irgendwann die Klasse benutzen. Angenommen, Sie verwenden immer noch zwei Klassen, die gleich benannt sind, könnte das später verwirrend sein. Vielleicht sollten Sie den Code in eine Funktion einschließen, um die von Ihnen erstellte Klasse zurückzugeben. Jetzt haben Sie eine grundlegende Factory .

%Vor%

Würde "Salut!" ausgeben.

    
Rod 16.09.2010 18:13
quelle
0

Sie müssen den Code möglicherweise nicht wie bei Ihnen wiederholen. Fragen Sie sich, ob Sie den Klassenbaucode oder nur Variablen innerhalb der Klasse selbst wiederholen müssen? Wenn es Letzteres ist, können Sie dieselbe Klasse für beide Fälle verwenden, indem Sie ein Argument in __init__() verwenden und dann eine Instanz der Klasse mit der gewünschten Variablen bedingt zurückgeben:

%Vor%     
jathanism 16.09.2010 19:38
quelle

Tags und Links