2014-04-23 2 views
14

Ich habe mehrere Tutorials auf Python gemacht und ich weiß, wie man Klassen definiert, aber ich weiß nicht, wie man sie benutzt. Zum Beispiel habe ich erstellen Sie die folgende Datei (car.py):Erzeuge Objekt aus der Klasse in einer separaten Datei

class Car(object): 
    condition = 'New' 
    def __init__(self,brand,model,color): 
     self.brand = brand 
     self.model = model 
     self.color = color 

    def drive(self): 
     self.condition = 'Used' 

Dann erstelle ich eine andere Datei (Mercedes.py), wo ich will ein Objekt Mercedes aus der Klasse Car erstellen:

Mercedes = Car('Mercedes', 'S Class', 'Red') 

, aber ich erhalte eine Fehlermeldung:

NameError: name 'Car' is not defined 

Wenn ich eine Instanz (Objekt) in der gleichen Datei zu erstellen, wo ich es erstellt (Auto), habe ich keine Probleme:

class Car(object): 
    condition = 'New' 
    def __init__(self,brand,model,color): 
     self.brand = brand 
     self.model = model 
     self.color = color 

    def drive(self): 
     self.condition = 'Used' 

Mercedes = Car('Mercedes', 'S Class', 'Red') 

print (Mercedes.color) 

Welche druckt:

Red 

Die Frage ist also: Wie kann ich ein Objekt aus einer Klasse aus verschiedener Datei im selben Paket (Ordner) erstellen?

+2

Ist Ihnen klar, dass 'condition' ist ein * Klassenattribut *, von allen Instanzen geteilt? – jonrsharpe

+0

@ jonrsharpe, Um für jedes Objekt getrennt zu sein, sollte ich es in self.condition umbenennen? – Trenera

+1

Ja, setze es als 'self.condition = 'New'' * innerhalb *' __init__'. – jonrsharpe

Antwort

29

In Ihrem Mercedes.py, sollten Sie die car.py Datei importieren wie folgt (solange die beiden Dateien im gleichen Verzeichnis sind):

import car 

Dann können Sie tun:

Mercedes = car.Car('Mercedes', 'S Class', 'Red') #note the necessary 'car.' 

Alternativ können Sie auch

from car import Car 

Mercedes = Car('Mercedes', 'S Class', 'Red')  #no need of 'car.' anymore 
+0

Danke, ich werde die Antwort akzeptieren, nachdem ich (in 10 min) – Trenera

+0

@ViharChervenkov, Dank haben darf. Froh, dass ich helfen konnte. – sshashank124

+0

Was ist, wenn sie _not_ im selben Verzeichnis sind? Vielen Dank! –

0

Verwenden Sie einfach den Importbefehl in Ihrer Mercedes-Datei. Es gibt eine gute Einführung zum Importieren in Python in here