为什么我无法正确获取访问课程的列表?

时间:2019-10-01 23:39:35

标签: python

我是Python的新手。我正在制作可以访问课程的基本列表。但是,当我将其发送到输出时,终端将其列为基本对象,而不是单独列出每个类项目。 这是代码:

     # Make a class with attributes
    class Persons(object):
         def __init__(self, firstName=None, lastName=None):
            self.firstName = firstName
            self.lastName = lastName

    # Make list with said attributes
        def newList():
            nameList = []
            nameList.append(Persons("Mathew", "Dodson"))
            nameList.append(Persons("Dr", "Kin"))

    # Print out said list

           print(str(nameList.firstName))
           print(str(nameList.lastName))

     newList()

我很确定我的语法完全错误。如果有人可以帮助,将不胜感激。

3 个答案:

答案 0 :(得分:2)

列出清单

要创建列表,您不需要进行连续的追加,只需像下面这样一次性声明:

name_list = [Persons('Mathew', 'Dodson'), Persons('Dr', 'Kin')]

迭代列表

列表本身没有first_name属性。但是元素确实如此。

for person in name_list:
    print(person.first_name)
    print(person.last_name)

很抱歉更改您的命名约定,但是每个人都在python中使用蛇形保护套。您可以在PEP8中进行进一步的探索。

答案 1 :(得分:1)

nameList是一个列表-它包含Person个对象。 nameList.firstname不起作用。您将需要在nameList中选择这些Person中的一个,然后访问属性。例如:

# Print out said list

print(str(nameList[0].firstName)) # Mathew
print(str(nameList[1].lastName))  # Kin

如果要打印出整个列表:

for person in nameList:
    print(person.firstName)
    print(person.lastName)

答案 2 :(得分:0)

('andrea', 10) ('mosca', 20) nameListlist没有listfirstName属性({{1}没有魔术}会自动访问其成员的属性。

类似地,您说“终端将其列为基本对象,而不是分别列出每个类项目”。这是因为与lastName一样,对象的list的信息也不多,但与list s不同的是,您可以对其进行自定义。

如果目标是打印出每个人的名字和姓氏,则可以执行以下操作:

repr

您也可以通过为您的类定义list for person in nameList: print(person.firstName, person.lastName) # Separates with a space 来实现此目的,以便自动生成更有用的字符串形式,例如:

__str__

这将使您获得与我刚才描述的第一个循环相同的结果:

__repr__