2016-09-20 2 views
0

Я новичок в создании классов, и я пытаюсь выполнить упражнение 9-1 в моей книге «Курс краха Питона», где последняя часть вопроса просит меня перезвонить мне метод, но я в конечном итоге получаюВызвать функцию, не определенную ошибку

«непонятная ошибка» для describe_restaurant().

Вот мой код:

class Restaurant(): 
    def __init__(self, r_name, c_type): 
     self.r_name = r_name 
     self.c_type = c_type 

    def describe_restaurant(): 
     print(self.r_name.title()) 
     print(self.c_type.title()) 

    def open_restaurant(): 
     print(self.r_name + " is now open!") 

Restaurant = Restaurant('Joe\'s Sushi', 'sushi') 

print(Restaurant.r_name) 
print(Restaurant.c_type) 

describe_restaurant() 
open_restaurant() 

Я думал, что describe_restaurant не должны быть определены, хотя, потому что я звоню его как функцию использовать?

+0

Вы должны сначала создать объект 'Restaraunt', а затем вызвать' describe_restaurant' из вновь созданного объекта –

+0

Это функция класса. Вы должны вызвать функцию класса с объектом класса. – MooingRawr

+3

Вы должны пересмотреть план уроков по классам. Вот еще один взгляд через официальный учебник: https://docs.python.org/3/tutorial/classes.html – idjaw

ответ

2

Try:

class Restaurant(): 
    def __init__(self, r_name, c_type): 
     self.r_name = r_name 
     self.c_type = c_type 

    def describe_restaurant(self): 
     print(self.r_name) 
     print(self.c_type) 

    def open_restaurant(self): 
     return "{} is now open!".format(self.r_name) 

restaurant = Restaurant('Joe\'s Sushi', 'sushi') 

print(restaurant.r_name) 
print(restaurant.c_type) 

restaurant.describe_restaurant() 
restaurant.open_restaurant() 

Вам нужно создать экземпляр класса и вызвать его функции. Кроме того, как указано в комментариях, вам необходимо передать self методам экземпляра. Краткое объяснение этого можно найти here.

+0

Вы абсолютно правы. Исправлено это в моем фрагменте. Не видел ... – albert

+0

Исправлено. Извините, был немного смущен о себе :) – albert

+0

Прошу прощения за поздний ответ, у меня не было много времени для кодирования в последнее время. Я посмотрю вашу ссылку, надеюсь, это поможет мне лучше понять функции и классы. :) – PhantomDiclonius

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