访问列表元素并调用它们的功能

时间:2015-10-17 21:36:19

标签: python arrays list python-3.x generics

以下是客户类:

class Customer:

    def __init__(self, timestamp, cid, item_count):

        self.time_stamp = timestamp
        self.customer_name = cid
        self.item_count = item_count

    def checkout(self, new_timestamp):
        self.time_stamp = new_timestamp

    def get_cus_name(self):
        return self.customer_name

如果我创建一个Customer对象的空列表,例如:

customers = [Customer]

然后在其他地方我尝试在循环中调用Customer方法,如:

def checkout_customer(self, cid):
        for cus in self.customers:
            if cus.get_cus_name == cid:
                cus.checkout(self.cur_num_customers + 7)

当我尝试调用cus.checkout时,为什么会出现错误?我的ide告诉我,它期望一个客户,但得到一个int。为什么它不会在这里传递给'自我'arg?

但是,如果我只是创建一个Customer对象并直接调用它的方法,那么它可以正常工作:

def foo(self):
        cus = Customer(1,'pop',2)
        cus.checkout(23)

这是我第一次学习python,而且我一直试图找出列表并访问其成员。也许我的self.custormers = [Customer]初始化不正确?

编辑:

在我的测试人员类的构造函数中,我创建了一个这样的空列表:

self.customer = [Customer]

我可以添加客户没问题:

def add_custormer(self, customer):
   self.customers.append(customer)

我的问题不是添加客户,而是在列表中访问他们的方法。做类似这样的事情self.customers [0] .checkout(1,'pop',2)给我一个错误“预期类型'客户'得到了int”。

1 个答案:

答案 0 :(得分:2)

我不确定checkout_customer所在的类,但我假设你在其中的某个地方声明了self.customers列表。

self.costumers = []

如果您打算在列表中添加元素Customer,则应使用类似:self.customers.append(Customer(x,y,z))的内容,因为您要将新客户添加到列表中,这样做时您需要初始化Customer类。

我没有尝试过代码,但我相信这样的事情应该有效:

def foo(self): self.customers.append(Customer(1,'pop',2)) self.checkout_customers(23)