2014-04-23 18 views
14

Zrobiłem kilka tutoriali na temat Pythona i wiem, jak definiować klasy, ale nie wiem jak z nich korzystać. Na przykład utworzyć następujące plik (car.py):Utwórz obiekt z klasy w oddzielnym pliku

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' 

Potem utworzyć kolejny plik (Mercedes.py), gdzie chcę, aby utworzyć obiekt Mercedes z klasy samochodów:

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

, ale pojawia się błąd:

NameError: name 'Car' is not defined 

Jeśli utworzyć instancji (obiektu) w tym samym pliku, gdzie stworzył go (cAR), nie mam żadnych problemów:

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) 

która drukuje:

Red 

Więc pytanie brzmi: W jaki sposób można utworzyć obiekt z klasy z innego pliku w tym samym opakowaniu (folderu)?

+2

Czy zdajesz sobie sprawę, że 'warunek' jest atrybutem * klasy *, współużytkowanym przez wszystkie instancje? – jonrsharpe

+0

@ jonrsharpe, Aby być oddzielnym dla każdego obiektu, powinienem zmienić jego nazwę na self.condition? – Trenera

+1

Tak, ustaw go jako 'self.condition = 'New'' * inside *' __init__'. – jonrsharpe

Odpowiedz

29

w twojej Mercedes.py, należy zaimportować plik car.py następująco (tak długo, jak te dwa pliki są w samym katalogu):

import car 

Następnie można zrobić:

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

Można również wykonać

from car import Car 

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

Dzięki, zaakceptuję odpowiedź po pozwoleniu (w 10 min) – Trenera

+0

@ViharChervenkov, Dzięki. Cieszę się, że mogłem pomóc. – sshashank124

+0

co jeśli są _nie_ w tym samym katalogu? dzięki! –

0

Po prostu użyj polecenia importu w swoim pliku Mercedesa. Istnieje dobre intro dotyczące importowania w języku Python w here