2017-01-23 2 views
-2

Ich versuche, mich selbst Objektprogrammierung in Python zu lehren. Ich möchte, dass meine Verbale nur für diese Instanz des Objekts sind, was ich unter Verwendung von self.verbalname getan habe.Versuchen, meine erste Klasse zu erstellen, erhalten "Objekt hat keine Attributdatei Fehler"

Im Moment habe ich einen Fehler für jede Zeile erhalten, die self.file hat darin zu sagen Objekt hat kein Attribut FILE Beispiel in

def open(self): 
    # open file 
    self.file = open(self.filename,"r",1); 

erhalte ich die Fehlermeldung

CODE

class spreedsheet(object): 

    def __init__(self, name): 
     self.filename = name 

    def getFileName(self): 
      print(self.filename) 

    def open(self): 
     # open file 
THIS LINE GIVES ME A ERROR SAYING OBJECT HAS NO ATTRIBUTE FILE 
     self.file = open(self.filename,"r",1); 

    def close(self): 
     # close file 
THIS LINE GIVES ME A ERROR SAYING OBJECT HAS NO ATTRIBUTE FILE 
     self.file.close(); 

    def addString(self,add): 
     # add a string to a line of the spreed sheet 
THIS LINE GIVES ME A ERROR SAYING FILE DOES NOT EXIST 
     self.file.write(add) 
     self.write(",") 

    def addStringRet(self,name): 
     # add a string to a line of the spreed sheet 
THIS LINE GIVES ME A ERROR SAYING FILE DOES NOT EXIST 
     self.file.write(add) 
     self.write("\r\n") 
     # Add a new string and start a new col 



myobject = spreedsheet("agraphdata.txt") 
myobject.addString("tedt") 
myobject.close() 
+2

Sie haben gerade vergessen, 'myobject.open()' aufzurufen. Schließen für (Art von) Tippfehler. –

+0

define self.file in __init__ function – Vanojx1

Antwort

0

Sie haben nirgends eine Instanzvariable file in der Klasse spreadsheet definiert. also wissen die Instanzmethoden, was es ist. Fügen Sie es zu Ihrem Konstruktor hinzu:

class spreedsheet(object): 
    def __init__(self, name): 
     self.filename = name 
     self.file = None 

    def getFileName(self): 
     print(self.filename) 

    def open(self): 
     self.file = open(self.filename,"r",1); 

    etc 
+0

Aber ohne 'open' zu nennen, wird das Problem nicht behoben. –

+0

Sie haben Recht, aber das ist nicht seine Frage. Er fragte nach der fehlenden Datei. Er wird den Fehler sehen, den Sie später erwähnen. – rtkaleta

+0

Außerdem sollte man Dateihandles nicht so handhaben, wie er es tut. Viel besser zu 'mit open (self.file_name, 'r') als in_file: return in_file.readlines()' oder etwas, so dass die 'in_file' geschlossen wird, wenn Sie die Anweisung verlassen. – rtkaleta

Verwandte Themen