2016-06-05 3 views
-1

Что мне нужно решить это:Создайте список класса и доступ к нему из другого класса

Create class "Scores" and "Player". 
Class score should have attributes level, score, time. 
Class player should have as information a name and a list of Scores, 
In class player implement the method maxLevel(), 
    which returns the max level achieved by the player. 

Я чувствую, что это несколько очень легко, но я до сих пор не могу понять это.

  1. Как я могу составить список баллов точно?
  2. Как только это будет сделано, как мне получить доступ к списку баллов для каждого игрока?

Спасибо!

Я пробовал это, но я просто знаю, что я делаю что-то не так.

class Score(): 
    level = 0 
    score = 0 
    time = 0 

    def __init__(self,level,score,time): 
     Score.level = level 
     score.score = score 
     Score.time = time 

class Player(): 
    def __init__(self, name, scores): 
     self.name = name 
     self.scores = scores 
    def maxLevel(): 
     ##Do stuff to calculate the max 


John = Player("John", [Score(100,1456,50), Score(210,1490,100)]) 


John.maxLevel() 
+0

Пожалуйста, покажите, что вы исследовали, и что вы пробовали. –

+0

Отредактировано, это должно быть ужасно, я настоящий начинающий, спасибо! – Alejo

ответ

0

Я рекомендую создавать классы, которые обозначают один объект, а не список из них. Я бы изменил имя класса «Баллы» на «Оценка», а затем я сделал бы столько объектов счёта, сколько захочу. Тогда я мог бы создать список под названием score. Теперь добавьте каждый объект оценки в список баллов. Теперь для доступа к десяткам каждого игрока типа Player.scores, который отобразит весь список, Players.scores [1] будет выбирать второй элемент в списке.

class Score(object): 
    level = 0 
    score = 0 
    time = 0 

    def __init__(self,level,score,time): 
     self.level = level 
     self.score = score 
     self.time = time 

class Player(object): 
    def __init__(self, name, scores): 
     self.name = name 
     self.scores = scores 

    def maxLevel(self): 
     max_level = 0 
     for score in self.scores: 
      if score.level > max_level: 
       max_level = score.level 

     return max_level 

if __name__ == "__main__": 
    jon = Player("John", [Score(100,1456,50), Score(210,1490,100)]) 
    # Player Name 
    print "Name:", jon.name 
    # Score Objects 
    print "Score Objects:", jon.scores 
    # Score Level of 1st score 
    print "Score Level 1st Score:", jon.scores[0].level 
    # Score Level of 2nd score 
    print "Score level 2nd Score:", jon.scores[1].level 

    # Max Level info 
    max_level = jon.maxLevel() 
    print "Max-Level:", max_level 
+0

Хм, спасибо за ответ. Было бы слишком много, чтобы спросить, можете ли вы объяснить это каким-то кодом? благодаря – Alejo

0

Я думаю, что главная проблема заключается в том, что вы определили level, score, time переменные как статический класс.

class Score(): 
    #level = 0 "these should not be here" 
    #score = 0 
    #time = 0 

    def __init__(self,level,score,time): 
     #you are not defining them for a class, but for a class instance, so each individual instance of the object score 
     self.level = level 
     self.score = score 
     self.time = time 

class Player(): 
    def __init__(self, name, scores): 
     self.name = name 
     self.scores = scores 
    def maxLevel(): 
     ##Do stuff to calculate the max 


John = Player("John", [Score(100,1456,50), Score(210,1490,100)]) 


John.maxLevel() 

Кроме того, если класс баллов, не имея каких-либо других атрибутов или специальные методы, рассмотреть возможность использования namedtuple класса. Он служит простой цели лучше.

from collections import namedtuple 

Score = namedtuple('Score', ['level', 'score', 'time'])  
Смежные вопросы