类名没有定义,但是

时间:2019-11-08 11:25:12

标签: python python-3.x

我只想创建一个带有名称的静态字段的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的{​​{1}}。

ex00.py中的行是:

STUDENT_NAME

2 个答案:

答案 0 :(得分:2)

我想您需要将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的import语句添加到文件后,类名字符串将出现在globals()中,并且测试通过。

答案 1 :(得分:1)

两个问题:

  1. 测试类位于单独的文件exercises.py中;您需要先从该文件(from exercises import Exercise00导入相关功能,然后才能从ex00.py中看到模块内容。

  2. 修复此问题后,将收到其他错误。就像测试的名称所说的那样,您应该在寻找static field,即属于类本身的东西。这段代码将STUDENT_NAME附加到 {em> Exercise00的实例。