Ошибка имени при попытке напечатать объект класса - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в python и мне нужна помощь. Мой код ниже. Я пытаюсь получить отформатированную таблицу из введенного списка пользовательских данных, но постоянно получаю сообщение об ошибке: «NameError: имя« games »не определено».

class game():
    def _init_(self,name,platform,genre,no_of_players,online_functionality):
        self.name = name
        self.platform = platform
        self.genre = genre
        self.no_of_players = no_of_players
        self.online_functionality = online_functionality


    def __repr__(self):
        print()
        print("%-15s%-15s%-15s%-15s%-15s" % ("name" , "platform" ," genre" ,"no_of_players","online_functionality"))
        print("---------------------------------------------------------------------------------")
        print("%-10s%-10s%-10s%-10s%-10s%" %(games.name,games.platform,games.genre,games.no_of_players,games.online_functionality))
        print()


    def __str__(self):
        print()
        print("%-15s%-15s%-15s%-15s%-15s" % ("name" , "platform" ," genre" ,"no_of_players","online_functionality"))
        print("------------------------------------------------------------------------")
        print("%-10s%-10s%-10s%-10s%-10s%" %(games.name,games.platform,games.genre,games.no_of_players,games.online_functionality))#formats and aligns columns
        print()

def get_game_from_user():

    gameList =[]
    games = game()
    games.name= input("Enter name of game: ") 
    games.platform= input("Enter Platform (e.g. XBox, PlayStation, PC etc: ")
    games.genre = input("Genre (e.g. Sport, Shooter, Simulation etc.): ")
    games.no_of_players= int(input("Enter number of players: "))
    games.online_functionality= input("Enter if it has online functionality or not : ")
    gameList.append(games)
    print(gameList)

1 Ответ

0 голосов
/ 04 мая 2020

Первая проблема:

Используйте self внутри вашего класса для доступа к вашему объекту, а не games. измените их:

games.name, games.platform , games.genre, ...

и другие подобные им вещи на следующие:

self.name, self.platform , self.genre, ...

Вторая проблема :

в вашем коде заключается в том, что вы должны return то, что вы хотите внутри __str__ и __repr__, а не print их:

def __repr__(self):
        result = ""
        result += "%-15s%-15s%-15s%-15s%-15s" % ("name" , "platform" ," genre" ,"no_of_players","online_functionality\n")
        result += "---------------------------------------------------------------------------------\n"
        result += "%-10s%-10s%-10s%-10s%-10s" %(self.name,self.platform,self.genre,self.no_of_players,self.online_functionality)
        result += "\n"
        return result

источник : python модель данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...