Ошибка имени: имя ‘Class’ не определено

#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())