以下是客户类:
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”。
答案 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)