2016-12-12 5 views
0

я объявил свой класс Customer и пытаются извлечь данные из экземпляра класса и мой метод get_place_in_queue работает нормально, но когда я бегу get_nr_errands это craches с ошибкой:Python 3.5.2 NameError

"name 'nr_errands' is not defined" 

Мой код до сих пор:

class Customer: 
    def __init__(self,index_number,place_in_queue,nr_errands): 
     self.index_number=index_number 
     self.place_in_queue=place_in_queue 
     self.nr_errands=nr_errands 

    def get_place_in_queue(self): 
     return place_in_queue 

    def get_index_number(self): 
     return index_number 

    def get_nr_errands(self): 
     return nr_errands 
test=Customer(2,4,5) 
test.get_nr_errands() 
+6

Shoud be 'return (self.nr_errands)'; 'nr_errands' установлен в экземпляре в' __init__', вам нужно будет его захватить через 'self'. Аналогично для остальных. –

+4

Довольно уверен, что 'get_place_in_queue' * не работает *, если у вас также нет глобальной переменной, называемой' place_in_queue'. Конечно, вам вообще не нужен ни один из этих методов. –

+2

Не используйте parens с 'return', это говорит о том, что они имеют эффект. Просто 'return self.nr_errands'. – RemcoGerlich

ответ

2

Вы забываете использовать self для доступа к переменным экземпляра. Вам необходимо:

class Customer: 
    def __init__(self,index_number,place_in_queue,nr_errands): 
     self.index_number=index_number 
     self.place_in_queue=place_in_queue 
     self.nr_errands=nr_errands 

    def get_place_in_queue(self): 
     return self.place_in_queue # <-- here 

    def get_index_number(self): 
     return self.index_number # <-- here 

    def get_nr_errands(self): 
     return self.nr_errands # <-- here