我只想创建一个带有名称的静态字段的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
答案 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)
两个问题:
测试类位于单独的文件exercises.py
中;您需要先从该文件(from exercises import Exercise00
导入相关功能,然后才能从ex00.py
中看到模块内容。
修复此问题后,将收到其他错误。就像测试的名称所说的那样,您应该在寻找static field
,即属于类本身的东西。这段代码将STUDENT_NAME
附加到 {em> Exercise00
的实例。