Erstellen Sie eine Liste mit Objekt-Klasse in Python
Es ist eine grundlegende Frage. Ich versuche den folgenden code:
class SMS_store:
def __init__(self):
self=[] #probably something is wrong here
def add_new_arrival(self,from_number,time_arrived,text_of_SMS):
self.append([False,from_number,time_arrived,text_of_SMS]) #append list to self list
self[len(self)-1]=tuple(self[len(self)-1])
def message_count(self):
return len(self)
my_inbox=SMS_store()
my_inbox.add_new_arrival('01234','9:37 AM','How are you?')
Aber ich bekomme die folgende Fehlermeldung:
>>>
Traceback (most recent call last):
File "C:\Users\Arnob\Desktop\New Text Document.py", line 15, in <module>
my_inbox.add_new_arrival('01234','9:37 AM','How are you?')
File "C:\Users\Arnob\Desktop\New Text Document.py", line 8, in add_new_arrival
self.append([False,from_number,time_arrived,text_of_SMS]) #append list to self list
AttributeError: 'SMS_store' object has no attribute 'append'
>>>
Was ist falsch in meinem code?
InformationsquelleAutor arnobpl | 2013-07-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine Unterklasse
list
wie dieseBeachten Sie, gibt es keine Notwendigkeit für
__init__
es sei denn, Sie wollen etwas extra zu tun gibt.Brauchen Sie nicht zu hängen Sie eine Liste aus und dann schalten Sie es in einen tuple erstellen, können Sie die Tupel direkt mit
()
statt[]
Wenn Sie wollen, um zu Erben aus
list
verwenden Sie die folgende:und entfernen Sie die Zuordnung zu
self
von der__init__
Methode.Sagte, möchten Sie vielleicht, um einfach ein benanntes Attribut mit der Liste:
So weit, stellvertretend für die eigentlichen Nachrichten, das klingt wie ein guter use-case für
namedtuple
. Es ist wie ein Tupel, sondern ermöglicht den Zugriff auf Felder über den Namen. Hier ist eine kurze Verdeutlichung:Müssen Sie immer noch eine normale Variablen-Namen, legen Sie einfach
self.
als Präfix:Zugreifen, tun Sie etwas wie:
Oder:
Bist du eigentlich überschreiben
self
. Sie wollen nicht, das zu tun.