我是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()
我很确定我的语法完全错误。如果有人可以帮助,将不胜感激。
答案 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)
是nameList
,list
没有list
或firstName
属性({{1}没有魔术}会自动访问其成员的属性。
类似地,您说“终端将其列为基本对象,而不是分别列出每个类项目”。这是因为与lastName
一样,对象的list
的信息也不多,但与list
s不同的是,您可以对其进行自定义。
如果目标是打印出每个人的名字和姓氏,则可以执行以下操作:
repr
您也可以通过为您的类定义list
或 for person in nameList:
print(person.firstName, person.lastName) # Separates with a space
来实现此目的,以便自动生成更有用的字符串形式,例如:
__str__
这将使您获得与我刚才描述的第一个循环相同的结果:
__repr__