2017-05-05 6 views
1

So habe ich diesen Code, das nicht funktioniert:Zugriff auf Komponenten einer Klasse innerhalb einer Liste

class Airport(): 
def _init_ (self): 
    self.Code_Icao="" 
    self.Latitude="" 
    self.Longitude="" 
    self.Schengen=False 
A=Airport() 
A.Code_Icao="LMAO" 
A.Latitude="12321412" 
A.Longitude="12123123" 
B=Airport() 
B.Code_Icao="JEJE" 
B.Latitude="1231231" 
B.Longitude="123123" 
v=[] 
v.append(A.__dict__) 
v.append(B.__dict__) 
print v[0].Code_Icao 

Ich weiß nicht, warum es nicht mir den Code einer Komponente der Liste Zugriff nicht lassen .
Ich erhalte diese Fehlermeldung:

Traceback (most recent call last): File "/Users/marc/PycharmProjects/untitled5/read.py", line 18, in print v[0].Code_Icao AttributeError: 'dict' object has no attribute 'Code_Icao'

+1

'v [0]' ist ein 'dict', kein' Airport'. Versuchen Sie 'print v [0] ['Code_Icao']' stattdessen –

+0

Es hat funktioniert! Vielen Dank, Mann! <3 –

+1

Ich würde denken, v = [A, B] wäre näher an dem, was Sie erwartet haben. –

Antwort

0

In den folgenden Zeilen:

v=[] 
v.append(A.__dict__) 
v.append(B.__dict__) 

Sie sind nicht A und B-v, sondern zwei dictionaries with A and B's writable attributes anhängt. Beachten Sie den Unterschied hier:

>>> A 
<__main__.Airport instance at 0x10c30c758> 
>>> A.__dict__ 
{'Latitude': '12321412', 'Longitude': '12123123', 'Code_Icao': 'LMAO'} 

A ein Airport Objekt ist, während A.__dict__ ein Wörterbuch mit A ‚s Attribute ist darin gespeichert.

Also, da Sie Wörterbücher in v sind speichern, müssen Sie die richtige Schreibweise verwenden, um seine Werte zuzugreifen:

print v[0]['Code_Icao'] 

, dass der Wert drucken sollten Sie zu bekommen versuchen.

Verwandte Themen