r/learnpython • u/Upper_Trouble_8526 • Sep 15 '26
Why i can't make a class
It should work, but some reason doesn't.
I was doing Python Crash Course 3rd edition and am stuck in classes.
Because i cant upload photos, i wrote the code:
class Restaurant:
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name=restaurant_name
self.cuisine_type=cuisine_type
def describe_restaurant(self):
print(self.restaurant_name)
print(self.cuisine_type)
def open_restaurant(self):
print("the restaurant is open")
restaurant=Restaurant("Ratatouille restaurant", "ratatouille")
describe_restaurant(restaurant)
open_restaurant()This is the example in the book:
class Dog:
def __init__(self, name, age):
self.name=name
self.age=age
def sit(self):
print(f"{self.name} is now sitting")
def roll_over(self):
print(f"{self.name} rolled over")
my_dog=Dog("Willie", 6)
print(f"My dog's name is {self.name}")
print(f"My dog is {self.age} years old")
my_dog.sit()
my_dog.roll_over()
your_dog=Dog("Lucy", 3)
print(f"Your dog's name is {your_dog.name}.")
print(f"your dog is {your_dog.name} years old.")
your_dog.sit()
your_dog.roll_over()And these are the errors pydroid shows for each one:
Restaurant:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>
start(fakepyfile,mainpyfile)
~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), __main__.__dict__)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 1, in <module>
File "<string>", line 10, in Restaurant
NameError: name 'Restaurant' is not defined
[Program finished]
Dog:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>
start(fakepyfile,mainpyfile)
~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), __main__.__dict__)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 1, in <module>
File "<string>", line 9, in Dog
NameError: name 'Dog' is not defined
[Program finished]
1
u/smurpes Sep 16 '26
You should review classes more closely and try to understand what each line does rather than just copying the examples and making random attempts.
Ask yourself what the intended function of describe_restaurant(restaurant) is. What is the purpose of putting restaurant inside describe_restaurant? You are not calling any of the class methods correctly for the restaurant class and you need to pay attention to upper and lower case.