如何创建和打印课程内容?

时间:2018-12-27 09:51:24

标签: python class object printing

我正在用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 :(得分:0)

您始终可以实现对象的方法:ObjectID,然后在使用以下命令打印时:

__str__(self)

您的your_obj = User(...) print your_obj 将被调用,您可以从其中返回任何要打印的内容。 例如:

__str__(self)

这将得到打印,我认为这样更有效并且编码得更好,而不是创建一个单独打印每个类属性的函数。

答案 1 :(得分:0)

错误的原因非常简单明了:您将函数定义为displayUserArray(UserArray, num),但是用displayUserArray(numOfUsers, userArray)调用-哎呀,您以错误的顺序传递了参数。

这就是说,几乎所有代码都是错误的,您显然没有得到类与实例之间的区别以及如何使用类来创建实例。我强烈建议您至少阅读 the official tutorial,并查看有关类和实例的其他一些教程和/或示例代码。