2015-10-17 3 views
1

Вот класс Customer:Доступ к элементам списков, и называя их Fuctions

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 

Если я создаю пустой список объектов клиентов, таких как:

customers = [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? Мой идеал говорит мне, что он ожидает Клиента, но получил int. Почему он не переходит в «я» здесь?

Однако, если я просто создать объект клиента и непосредственно вызывать его методы, он отлично работает:

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

Это мой первый раз обучения питон, и ив застрял, пытаясь выяснить, списки, и получить доступ к его члены. Возможно, моя инициализация self.custormers = [Customer] неверна?

EDIT:

В моем конструктор класса тестер создать пустой список, как это:

self.customer = [Customer] 

Я могу не добавить клиентов нет проблем:

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

Моя проблема заключается не добавляя клиентов, но получая доступ к их методам, когда они находятся в списке. Делать что-то вроде этого self.customers [0] .checkout (1, 'pop', 2) дает мне ошибку «Ожидаемый тип« Клиент »получил int».

+0

Это не список клиентов, это список ссылок на самом класс Customer. –

+0

Да, ваша инициализация списка 'customers' была неправильной. Вы просто разместили «список» класса «Клиент» внутри списка, его не настоящий клиент. Вы должны сделать что-то вроде 'self.customers = [Customer (1232144234, 123, 2)]' – dopstar

ответ

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)

+0

Извините, я ошибся. Я объявил пустое, как, например: self.customers = [Customer]. Скажем, я добавляю 10 клиентов в список. Моя проблема в том, что я хочу вызвать функции из списка, например self.customers [0] .function1(). Я редактировал свое оригинальное сообщение для дальнейших разъяснений. – Infodayne

+1

@Infodayne Спасибо за разъяснение. Я думаю, вы должны объявить пустой массив как 'self.costumers = []'. Таким образом, когда вы передаете int, он возвращает объект costumer – GSalazar

Смежные вопросы