2016-06-13 3 views
0

Я соскабливаю несколько страниц, чтобы собрать данные о спортсменах. Я начинаю так:Как вы называете новый экземпляр класса, когда вы не знаете, какое имя заранее?

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

и я иду дальше, чтобы получить такие вещи, как имя спортсмена, команды, рост, вес и т.д.

После того, как я закончил сбор данных, я хочу создать экземпляр моего класса спортсменов. Очевидно, что при тестировании, я могу просто сделать что-то вроде этого:

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

Моя проблема заключается в том, что я не знаю, как назвать эти новые экземпляры (за пределами, когда я делаю экземпляры как david_ortiz для тестирования). Как я могу назвать эти экземпляры без жесткого кодирования имени спортсменов заранее? Также возможно, что могут быть несколько спортсменов с одним и тем же именем, так что, возможно, это не лучшее решение? Если это так, что люди делают в этой ситуации?

+1

Сделайте словарь с именами в качестве ключей вместо отдельных переменных. Если может быть более одного игрока с тем же именем, используйте вместо него что-то другое (например, какой-либо идентификатор игрока или комбинацию имени с командой игрока, дату рождения и т. Д.). – BrenBarn

ответ

0

Я думаю, что вы можете использовать Dict для хранения имя вы получаете от веб-данных

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

или

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

, когда вы хотите получить доступ к данным в Словаре:

allAthlete.get(name,None) 

для вызова метода спортсмена:

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

Спасибо! @galaxyan Теперь, если я хочу вызвать конкретный экземпляр класса спортсмена, как бы я это сделал? Опять же, скажем, я очищаю страницу Дэвида Ортиса, и я храню экземпляр в словаре all_athlete. Когда я пытаюсь 'print all_athletes' похоже, что имя экземпляра - это строка« Давид Ортис ». Тем не менее, если я запустил 'print 'David Ortiz'.height' Я получаю сообщение об ошибке, указывающее, что объект str не имеет атрибута' height. ' Итак, как я могу вызвать и ссылаться на вновь созданный экземпляр? – CGul

+0

@CGul вы можете получить доступ к dict. отредактировать ответ – galaxyan

Смежные вопросы