nop = 0
patron = list
def createnew(firstname, lastname, phone, age, gender):
name = (lastname.lower() + ", " + firstname.lower())
patron.append(patrons(name, phone, age, gender))
nop += 1
class patrons():
number = 1
def __init__(self, name, phone, age, gender):
self.name = name
self.phone = phone
self.age = age
self.gender = gender
我的代码的几部分用于保存有关库赞助人信息的程序。我想要做的是将班级中的所有成员(顾客)存储在一个列表(赞助人)中,我知道这些名字有点令人困惑,我没有想到,对不起。我遇到的问题是,当我运行createnew函数时,我收到一个错误,说“描述符'追加'需要一个'列表'对象但收到'顾客'”我的印象是我可以存储类对象在列表中。我不能这样做吗?如果我能做到,我还需要改变什么?
答案 0 :(得分:3)
patron = list
应该是patron = list()
:
调用list.append(1)
会再现类似于您提到的错误:
In [1]: list.append(1)
TypeError: descriptor 'append' requires a 'list' object but received a 'int'
要了解错误消息的含义,您可以先阅读methods are descriptors的内容。另请注意,在Python2中,必须使用调用类的实例(例如list.append
)调用未绑定的方法,例如list
。但这与修复问题无关,除非您对错误的性质感到好奇。
patron = list
使patron
等于内置类list
。
patron = list()
使patron
成为班级list
的一个实例。
答案 1 :(得分:1)
答案 2 :(得分:1)
如前所述,list应该是list(),你应该给nop作为参数:
nop = 0
patron = list()
def createnew(firstname, lastname, phone, age, gender, nop):
name = (lastname.lower() + ", " + firstname.lower())
patron.append(patrons(name, phone, age, gender))
nop += 1
class patrons():
number = 1
def __init__(self, name, phone, age, gender):
self.name = name
self.phone = phone
self.age = age
self.gender = gender