#python #python-3.x #nameerror
#python #python-3.x #ошибка имени
Вопрос:
При компиляции я получаю эту ошибку:
Traceback (most recent call last):
File "c:/Users/dvdpd/Desktop/ProjectStage/Main.py", line 1, in <module>
class Main:
File "c:/Users/dvdpd/Desktop/ProjectStage/Main.py", line 6, in Main
test = Reading()
NameError: name 'Reading' is not defined
Код:
class Main:
print("Welcome.nn")
test = Reading()
print(test.openFile)
class Reading:
def __init__(self):
pass
def openFile(self):
f = open('c:/Users/dvdpd/Desktop/Example.txt')
print(f.readline())
f.close()
Я не могу использовать класс Reading
и я не знаю почему.
Main
и Reading
находятся в одном файле, поэтому я думаю, что мне не нужен import
.
Комментарии:
1. РЕДАКТИРОВАТЬ: Спасибо всем и извините за глупый вопрос!
2. Вы также можете пометить вопрос как удаленный.
Ответ №1:
Прямое объявление не работает в Python. Таким образом, вы получите ошибку, только если вы создадите объект основного класса следующим образом:
class Main:
def __init__(self):
print("Welcome.nn")
test = Reading()
print(test.openFile)
# Main() # This will NOT work
class Reading:
def __init__(self):
pass
def openFile(self):
f = open('c:/Users/dvdpd/Desktop/Example.txt')
print(f.readline())
f.close()
# Main() # This WILL work
Ответ №2:
Исходные файлы Python интерпретируются интерпретатором сверху вниз.
Итак, когда вы вызываете Reading()
внутри класса Main
, он еще не существует. Вам нужно поменять местами объявления, чтобы поместить их Reading
перед Main
.
Ответ №3:
Вам нужно определить Reading
, прежде чем Main
Ответ №4:
Вам нужно определить class Reading
перед class Main
.
class Reading:
def __init__(self):
pass
def openFile(self):
f = open('c:/Users/dvdpd/Desktop/Example.txt')
print(f.readline())
f.close()
class Main:
print("Welcome.nn")
test = Reading()
print(test.openFile())