Как создать и распечатать содержимое класса? - PullRequest
0 голосов
/ 27 декабря 2018

Я создаю структуру классов в python для города, которая хранит название, страну, население и язык для города, и все они вводятся пользователем.Затем информация должна быть распечатана.

Я думаю, что я могу успешно хранить информацию в структуре класса (хотя это может быть и неправильно), но мне не удается распечатать информацию.В настоящее время я получаю сообщение об ошибке: int object is not subscriptable.

class User():
    def _init_(self, username, password, email, numOfLogins):
        User.username = username
        User.password = password
        User.email = email
        User.numOfLogins = numOfLogins

#User Record Array Creation
def createUserArray(num , User):
    UserArray = []
    for x in range(num):
        UserArray.append(User)
    return UserArray

#User Record Array Population
def populateUserArray(num, UserArray):
    for x in range(len(userArray)):
        UserArray[x].username = str(input("Enter username."))
        UserArray[x].password = str(input("Enter password."))
        UserArray[x].email = str(input("Enter email address."))
        UserArray[x].numOfLogins = int(input("Enter number of logins."))
    return UserArray

#User Record Array Display
def displayUserArray(UserArray, num):
    for x in range(len(userArray)):
        print(UserArray[x].username, UserArray[x].password, UserArray[x].email, str(UserArray[x].numOfLogins))

#Top Level Program
numOfUsers = 3
userArray = createUserArray(numOfUsers, User)
userArray = populateUserArray(numOfUsers, userArray)
displayUserArray(numOfUsers, userArray)

Все содержимое класса должно отображаться в конце программы, но в тот момент, когда моя программа вылетает из-за ошибки - int object is not subscriptable.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Причина вашей ошибки довольно проста и очевидна: вы определили функцию как displayUserArray(UserArray, num), но вызываете ее с помощью displayUserArray(numOfUsers, userArray) - IOW вы передаете аргументы в неправильном порядке.

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

0 голосов
/ 27 декабря 2018

вы всегда можете реализовать метод: __str__(self) объекта, а затем, когда вы просто напечатаете его с помощью:

your_obj = User(...)
print your_obj

, будет вызван ваш __str__(self), и вы сможете вернуться из него как угоднохочу распечатать.например:

def __self__(self):
    return `this class has the following attributes: %s %s %s %s` % (self.username,self.password,self.email ,self.numOfLogins )

и это то, что получит печать, я думаю, что это более эффективно и хорошо закодировано, чтобы работать подобным образом, а не создавать функцию, которая печатает каждый атрибут класса отдельно.

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