NameError: имя класса не определено, несмотря на то, что оно импортировано - PullRequest
0 голосов
/ 03 февраля 2020

Я написал проект для Spyder, который содержит несколько файлов модулей, таких как tester.py и scheduler.py. Я создал следующие классы в tester.py:

class Tester(object):
    def run(self):
        pass

Когда я импортировал класс Tester в scheduler.py, я получил ошибку имени (я использовал Anaconda Prompt для доступа к папке проекта и запуска python scheduler.py ):

from tester import Tester
class Scheduler():
    def schedule_tester(self):
        getter = Tester()
        while True:
            getter.run()

if __name__ == '__main__':
    scheduler = Scheduler()
    scheduler.schedule_tester()

Traceback (most recent call last):
NameError: name 'Tester' is not defined

Может кто-нибудь помочь мне разобраться, большое спасибо!

1 Ответ

1 голос
/ 03 февраля 2020

Ваш класс планировщика создает экземпляр getter как экземпляр класса Tester. Затем вы пытаетесь использовать метод run в импортированном классе Tester. Это невозможно, поскольку это обычный метод, а не метод класса. Я думаю, что вы хотите вызвать getter.run () вместо Tester.run () в то время как l oop. Ваш планировщик будет выглядеть так:

class Scheduler():
    def schedule_tester(self):
        getter = Tester()
        while True:
            getter.run() # not Tester.run()
...