Я действительно надеюсь, что это не повторение ... если это так, я не могу найти ответ нигде, поэтому прошу прощения.Объявление объекта Python не работает
В любом случае, мой вопрос: я пишу код, где, если для данных, которые я получаю, требуется команда вместо игрока, у меня есть класс (называемый Team), который содержит два SinglePlayers (также класс), а затем несколько других атрибутов, просто строки. Проблема в том, что когда я повторяю свой цикл, читая данные xml и заполняя свою «командную» переменную, кажется, что вся информация для SinglePlayers не сбрасывается. Это проблема, потому что она меняет эту информацию каждый раз, когда я вставляю новую «команду» в список «командных» объектов, которые у меня есть. Код длинный, поэтому я собираюсь опубликовать только то, что имеет значение.
Я работаю только с python в течение нескольких дней. Я работаю в прошлом году в java и C++, поэтому мой мозг имеет в голове те понятия, что работают переменные и структуры. Я знаю, что python отличается, поэтому, если кто-то может прояснить, почему это не работает, это было бы потрясающе. Благодаря!
class SinglePlayer:
entry_code = ""
first_name = ""
last_name = ""
nation = ""
seed_rank_sgl = ""
seed_rank_dbl = ""
entry_rank_sgl = ""
entry_rank_dbl = ""
class Team:
top_player = SinglePlayer()
bottom_player = SinglePlayer()
entry_code = ""
seed_rank = ""
entry_rank = ""
def DoublesEvent(self, team_nodes):
#Create List to store team objects
teams_list = []
for k in range(0, team_nodes.length):
#Get the current node
teams_node = team_nodes.item(k)
team_node = team_nodes.item(k).getElementsByTagName("Player")
top_player_node = team_node.item(0)
bottom_player_node = team_node.item(1)
#Make a new team object to fill and add to teams_list
team = Team()
team.entry_code = teams_node.getAttribute("EntryCode")
#Top Player Info
team.top_player.first_name = top_player_node.getAttribute("FirstName")
team.top_player.last_name = top_player_node.getAttribute("LastName")
team.top_player.nation = top_player_node.getAttribute("Nation")
#Bottom Player Info
team.bottom_player.first_name = bottom_player_node.getAttribute("FirstName")
team.bottom_player.last_name = bottom_player_node.getAttribute("LastName")
team.bottom_player.nation = bottom_player_node.getAttribute("Nation")
eam.seed_rank = self.GetSeedRank(team)
team.entry_rank = self.GetEntryRank(team)
#Add the team to the list
teams_list.append(team)
return teams_list
Созданные вами члены - это все атрибуты класса, такие как статические элементы в C++ или Java. И, в более общем плане, весь этот код запускается как часть определения самого класса, а не для построения каждого экземпляра. – abarnert