2016-06-13 3 views
0

Ich kratze einige Seiten, um Daten über Athleten zu sammeln. Ich beginnen wie folgt:Wie benennen Sie eine neue Instanz einer Klasse, wenn Sie nicht wissen, was der Name im Voraus ist?

req = requests.get(url) 
soup = BeautifulSoup(req.text, "html.parser") 

und ich gehe auf die Dinge zu bekommen, wie der Name des Sportlers, team, Größe, Gewicht, usw.

Sobald ich fertig bin, die Daten zu sammeln, ich will erstellen eine Instanz meiner Athletenklasse. Offensichtlich bei der Prüfung, kann ich nur so etwas wie diese:

david_ortiz = athlete.Athlete(name, team, height, weight) 

Mein Problem ist, dass ich weiß nicht, wie diese neuen Instanzen zu nennen (außerhalb wenn ich Instanzen wie david_ortiz für die Prüfung zu machen). Wie kann ich diese Instanzen benennen, ohne den Namen des Athleten im Voraus zu kodieren? Es ist auch möglich, dass es mehrere Athleten mit dem gleichen Namen gibt, also wäre das vielleicht nicht die beste Lösung? Wenn das der Fall ist, was machen die Menschen in dieser Situation?

+1

Erstellen Sie ein Wörterbuch mit den Namen als Schlüssel anstelle von separaten Variablen. Wenn es mehr als einen Spieler mit dem gleichen Namen geben kann, verwenden Sie stattdessen etwas anderes als Schlüssel (z. B. eine Art Spieler-ID oder eine Kombination des Namens mit dem Team des Spielers, Geburtsdatum usw.). – BrenBarn

Antwort

0

Ich glaube, Sie dict Namen speichern können Sie von Web-Daten erhalten

allAthlete = { name : athlete.Athlete(name, team, height, weight) } 

oder

allAthlete = {} 
allAthlete[name] = athlete.Athlete(name, team, height, weight) 

wenn Sie die Daten in dict zugreifen möchten:

allAthlete.get(name,None) 

Methode des Athleten zu benennen:

allAthlete.get(name,None).height 
+0

Danke! @galaxyan Wenn ich jetzt eine bestimmte Instanz der Athletenklasse aufrufen möchte, wie würde ich das tun? Sagen wir mal, ich kratze die Seite von David Ortiz und speichere die Instanz im Wörterbuch all_athlete. Wenn ich versuche 'print all_athletes' es sieht aus wie der Name der Instanz ist die Zeichenfolge 'David Ortiz.' Wenn ich aber 'drucken 'David Ortiz'.height' Ich bekomme einen Fehler, der sagt str Objekt hat kein Attribut' Höhe. ' Wie kann ich die neu erstellte Instanz aufrufen und referenzieren? – CGul

+0

@CGul Sie können auf das Diktat zugreifen. Antwort bearbeitet – galaxyan

Verwandte Themen