2017-10-16 5 views
1

Problem: Ich habe Probleme beim Aufrufen von Klassen in einem Programm.Python: Problem beim Importieren der Klassendefinition von einer .py in eine andere

Ich habe ein Programm mit dem Namen example.py, die den folgenden Code hat:

class ExampleBase: 

""" 
This is the ExampleBase class 
""" 

def __init__(self, company_name="N/A", stock_dict={}): 
    """ 
    class constructor 
    """ 
    self.company_name = company_name 
    self.stock_dict = stock_dict  
    return 

def __str__(self): 
    """ 
    Prints the company name string 
    """   
    str = "The Company name is: %s" %\ 
     (self.company_name 
     ) 

    return str 


def add_purchase(self, addtlSTK): 
    """ 
    Adds item to stock_dict 
    """ 
    self.stock_dict.update(addtlSTK) 
    return 

Ich bin versucht ExampleBase in einem anderen Programm, dessen Code zu nennen ist:

import example 

if __name__ == "__main__": 
    a = {"10-01-2014":(10, 11.25), "10-02-2014":(11, 12.25), "10-03-2014":(12, 13.25)} 
    b = example.ExampleBase("Bern", a) 
+1

Was das Problem ist, und/oder Fehler, den Sie bekommen? – GWW

+0

Haben Sie die erste Datei korrekt eingerückt? Alle Funktionsaufrufe sollten von der Klasse eingerückt werden Beispiel: – smb564

+0

Mögliches Duplikat von: https://Stackoverflow.com/a/4142178/3991696 –

Antwort

1

Das einzige Problem mit Ihr Code ist der falsche Einzug von example.py. Die Methoden müssen unter der Klasse eingerückt sein. Stellen Sie außerdem sicher, dass sich beide Python-Dateien im selben Ordner befinden. Hier

ist die gegliederte example.py,

class ExampleBase: 

    """ 
    This is the ExampleBase class 
    """ 

    def __init__(self, company_name="N/A", stock_dict={}): 
     """ 
     class constructor 
     """ 
     self.company_name = company_name 
     self.stock_dict = stock_dict 
     return 

    def __str__(self): 
     """ 
     Prints the company name string 
     """ 
     str = "The Company name is: %s" % \ 
       (self.company_name 
       ) 

     return str 


    def add_purchase(self, addtlSTK): 
     """ 
     Adds item to stock_dict 
     """ 
     self.stock_dict.update(addtlSTK) 
     return 
+0

Ok, nach dem Überprüfen der Einrückungen scheint der Konstruktor gut zu laufen. Danke! –

0

Ok, nachdem die Einzüge Überprüfung der Konstruktor scheint gut zu laufen. Ich versuche jetzt ein bisschen mehr zu machen und es stürzt ab. Hier ist der Code, ich bin versucht zu laufen:

import example 

if __name__ == "__main__": 
    a = {"10-01-2014":(10, 11.25), "10-02-2014":(11, 12.25), "10-03-2014":(12, 13.25)} 
    b = example.ExampleBase("Bern", a) 
    c = {"10-04-2014":(13, 14.25)} 
    b.example.ExampleBase.add_purchase(c) 
    print(b) 

Der Fehler, den ich sehe, bin jetzt: Attribute: ‚ExampleBase‘ Objekt hat kein Attribut ‚Beispiel‘

+0

Ersetzen Sie b.example.ExampleBase.add_purchase (c) durch b.add_purchase (c). Die Variable b ist eine Instanz von ExampleBase(). Daher können Sie Methoden direkt aufrufen. –

+0

Das hat es geschafft! Vielen Dank! Ziemlich verwirrend zu wissen, wann den vollen Namen zu verwenden und wenn nicht von einem Anfänger Standpunkt, aber ich fange an, den Dreh raus zu bekommen. –

Verwandte Themen