Имя класса не определено, но оно - PullRequest
0 голосов
/ 08 ноября 2019

Я просто хочу создать определение class со статическим полем с именем. Файл с именем exercises.py содержит:

Первая ошибка:

FAIL: test_00_packages (__main__.Ex00)
Traceback (most recent call last):
File "ex00.py", line 55, in test_00_packages
self.assertTrue("Exercise00" in globals()) 
AssertionError: False is not true

Позже:

class Exercise00:
    def __init__(self, STUDENT_NAME):
        self.STUDENT_NAME = 'Name Name'

Но если я пытаюсь напечатать Exercise00.STUDENT_NAME, я просто получаю NameError: name 'Exercise00' is not defined

Но я думаю, что я определил это?!

Здесь полная ошибка:

ERROR: test_01_static_field (__main__.Ex00)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "ex00.py", line 60, in test_01_static_field
    print("[I] Name: " + Exercise00.STUDENT_NAME)
NameError: name 'Exercise00' is not defined

----------------------------------------------------------------------

Моя задача - создать class под названием Exercise00 сстатическое поле STUDENT_NAME.

Строка в ex00.py:

def test_00_packages(self):
    self.assertTrue("Exercise00" in globals())

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

Полагаю, вам нужно определить STUDENT_NAME как поле уровня класса, а не атрибут уровня экземпляра:

    class Exercise00:
        STUDENT_NAME = 'Name Name'

В сообщении об ошибке вы можете заметить, что тест вызывает поле уровня класса Exercise00.STUDENT_NAME:

print("[I] Name: " + Exercise00.STUDENT_NAME)

И вам также необходимо импортировать class Exercise00 в тестовый модуль:

from exercises import Exercise00

Как только вы добавите оператор импорта в файл с тестом ex00.py, строка имени класса появляется в globals(), и тест проходит.

1 голос
/ 08 ноября 2019

Две проблемы:

  1. Тестовый класс находится в отдельном файле exercises.py;вам нужно импортировать соответствующую функциональность из этого файла (from exercises import Exercise00), прежде чем содержимое модуля станет видимым из ex00.py.

  2. Как только вы исправите это, вы получите другую ошибку. Как следует из названия теста, вы должны искать static field, то есть то, что принадлежит самому классу . Этот код прикрепляет STUDENT_NAME к экземплярам Exercise00.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...