Python:包含类成员的列表

时间:2014-01-08 21:58:09

标签: python list class

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函数时,我收到一个错误,说“描述符'追加'需要一个'列表'对象但收到'顾客'”我的印象是我可以存储类对象在列表中。我不能这样做吗?如果我能做到,我还需要改变什么?

3 个答案:

答案 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等于内置类listpatron = list()使patron成为班级list的一个实例。

答案 1 :(得分:1)

你应该设置赞助人

patron = list()

无关,nop += 1将抛出UnboundLocalError。在global nop内添加createnew更多信息here

答案 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