NameError: имя 'Class' не определено - PullRequest
0 голосов
/ 27 марта 2019

Когда я компилирую, я получаю эту ошибку:

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.\n\n")
    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.

Ответы [ 4 ]

1 голос
/ 27 марта 2019

Вам нужно определить Reading до Main

1 голос
/ 27 марта 2019

Исходные файлы Python интерпретируются интерпретатором сверху вниз .

Итак, когда вы вызываете Reading() внутри класса Main, он еще не существует.Вам нужно поменять местами объявления, чтобы поставить Reading перед Main.

0 голосов
/ 27 марта 2019

Форвардное объявление не работает в Python. Таким образом, вы получите ошибку, только если создадите объект класса Main следующим образом:

class Main:
    def __init__(self):
        print("Welcome.\n\n")
        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
0 голосов
/ 27 марта 2019

Вам нужно определить 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.\n\n")
    test = Reading()
    print(test.openFile())
...