2017-06-20 2 views
0

Ich versuche eine Chemie-GUI zu erstellen, die verschiedene Informationen über jedes Element anzeigt. Ich verwende eine Liste von Klasseninstanzen, um die Informationen auszudrucken, aber ich erhalte weiterhin eine 'list' object has no attribute 'atomic_number'. Dies ist die Klasse, die ich eingerichtet habe, zusammen mit dem Code, der mir Fehler gibt.Python: Kann die Liste der Klasseninstanzvariablen nicht durchsuchen

class ElementInformation(object): 
    def __init__(self, atomic_number, element_name, element_symbol, atomic_weight, melting_point, boiling_point) 
     self.atomic_number = atomic_number 
     self.element_name = element_name 
     self.element_symbol = element_symbol 
     self.atomic_weight = atomic_weight 
     self.melting_point = melting_point 
     self.boiling_point = boiling_point 

def find_element(): 
    update_status_label(element_information, text_entry) 
    # text entry is a text entry field in TKinter 
    # other code in here as well (not part of my question 


def update_status_label(element_instances, text_input): 

    for text_box in element_instances.atomic_number: 
     if text_input not in text_box: 
      # do stuff 
     else: 
      pass 

element_result_list = [*results parsed from webpage here*] 
row_index = 0 
while row_index < len(element_result_list): 
    element_instances.append(ElementInformation(atomic_number, element_name, element_symbol, atomic_weight, melting_point, boiling_point)) 
    # the above information is changed to provide me the correct information, it is just dummy code here 
    row_index += 1 

mein Problem ist in der Funktion update_status label, speziell die for Schleife. Python wirft einen Fehler (wie ich vorher sagte), der 'list' object has no attribute 'atomic_number' sagt. Für das Leben von mir kann ich nicht herausfinden, was falsch ist. Danke für jede Hilfe!

Wenn es einen Unterschied macht, ich bin mit Python 3.x auf Windows

Antwort

1

diesen Versuchen Sie stattdessen:

for element in element_instances: 
    text_box = element.atomic_number: 
    if text_input not in text_box: 
     # do stuff 
    else: 
     pass 

Die Liste "element_instances" ist eine Python-Liste. Es hat nicht das Attribut ".atomic number", obwohl alle Elemente darin ein solches Attribut haben. Pythons for-Anweisung weist jedem Element der Liste eine Variable zu - dieses Element ist eine Instanz Ihrer benutzerdefinierten Klasse, in der Sie mit Ihren Attributen experimentieren können.

+0

Meine Internetverbindung ist im Moment sehr langsam, so dass ich nichts mehr testen kann, bis ich nach Hause komme, aber das macht jetzt Sinn, wenn ich es mir ansehe. Vielen Dank! – Goalieman

Verwandte Themen