Deklarieren einer nicht initialisierten Variablen in der Klassendefinition in Python


userJohn

Ich komme aus einem MATLAB-Hintergrund. Wenn ich Klassendefinitionen erstelle, kann ich "leere" Variablennamen instanziieren und ihnen später Werte oder Objekte zuweisen. Dh


classdef myclass < handle

    properties
        var1
        var2
    end 
end

a = myClass;
a.var1 = someOtherClassObject;

Wie mache ich das in Python? Ich habe so etwas versucht:

class myClass:
def __init__(self):
    var1 
    var2

a = myClass()
a.var1 = someOtherClassObject()

Aber das ist nicht richtig. Der Hauptzweck besteht darin, eine Definition meiner Klasse wie eine Struktur zu erstellen und später die Variablen nach Bedarf zu instanziieren.

Und Hilfe wäre dankbar.

Anand S Kumar

Sie müssen verwenden self., um Variablen für Instanzen (Objekte) zu erstellen.

Ich glaube nicht, dass Sie in Python einen nicht initialisierten Namen haben können. Warum initialisieren Sie stattdessen nicht einfach Ihre Instanzvariablen auf None? Beispiel -

class myClass:
    def __init__(self):
        self.var1 = None 
        self.var2 = None

Sie können sie später mit beliebigen Einstellungen einstellen -

a = myClass()
a.var1 = someOtherClassObject

Wenn Sie Klassenvariablen definieren müssen (die von mehreren Instanzen gemeinsam genutzt werden), müssen Sie sie außerhalb der __init__()Methode direkt innerhalb der Klasse als - definieren

class myClass:
    var1 = None
    var2 = None
    def __init__(self):
        pass

Verwandte Artikel


Umfang der nicht initialisierten Variablen in JavaScript

Yamcha Ich kann nicht verstehen, warum sich dieser Code so verhält, wie er ist: for (var i = 1; i < 3; i++) { var j; if (!j) { j = 1; } else { alert("why are we here? j shouldn't be defined but it's " + j); } } ( jsFiddle ) Wen

Wert einer nicht initialisierten Variablen in C ++

Huyen Das ist ziemlich einfach, aber ich kann es nicht erklären. Ich deklariere 4 Variablen und drucke sie in C ++ aus: #include <iostream> using namespace std; int main(){ int a, b, c, d; cout << "a = " << a << endl; cout << "b = " << b << endl; cou

Deklarieren einer neuen Variablen in der rekursiven Funktion

John Kim Ich versuche, Strassens Matrixmultiplikationsalgorithmus in VBScript zu implementieren. Ich habe jedoch viele Probleme mit der Rekursion. Im folgenden rekursiven Algorithmus: Function multiply(matrixA, matrixB) Dim n n = UBound(matrixA) + 1

Variablen in einer Funktionspython deklarieren

Gullivers Brandung Aus irgendeinem Grund wird in meinem Code immer wieder die Fehlermeldung angezeigt, dass meine Variablen nicht deklariert wurden. Dies geschieht nur, wenn ich versuche, sie in einer Funktion und nicht außerhalb zu deklarieren. Beispiel x, y

Ist der Wert einer nicht initialisierten Variablen immer "Müll"?

samuelbrody1249 Gibt es Fälle, in denen es in Ordnung ist, eine Variable zu verwenden, wenn sie nicht initialisiert wurde, oder wird immer davon ausgegangen, dass es sich um Müll handelt? Ein Fall wäre zum Beispiel: // global example? // static example? // ext

Perl - Verwendung der nicht initialisierten Variablen $ftp

Cory Kleiser Ich erhalte eine Fehlermeldung, wenn ich das folgende Perl-Skript ausführe. Der Fehler lautet: Verwendung eines nicht initialisierten Wertes im Werkzeug bei AfterGauss.pl Zeile 54. Zeile 54 ist $ftp->put($fpath1) || die $ftp->message;. Gibt es etw