执行文件类声明我写了一个程序,允许用户给我一个类名和定义类,像这样的文件:命名空间在运行时
input = raw_input("Input the new classname with a space and then the file name defining the class")
class_name, file_name = input.split(" ")
我再执行该文件中定义的类:
execfile(file_name)
,并尝试创建新定义的类的实例:
d[k] = eval(new_class)(**d[k])
然而这产生了以下错误:
d[i] = eval(new_class)(**d[i])
File "<string>", line 1, in <module>
NameError: name 'MeasureDay' is not defined
这是我喂在已执行下面的类定义后:
class MeasureDay:
print("defining measureday")
def __init__(self, **kargs):
self.day = kwargs.get('day', -1)
self.measurement_value = kwargs('measurement_value', -1)
def __str__(self):
return "here is a custom defined string for MeasureDay"
我知道类的定义被执行,因为我看到了记录声明“确定measureday “ 如预期的。
我在做什么错?我猜这与一些命名空间惯例有关。当我像这样定义类时,是否需要定义一个名称空间?如果是这样,我该如何去做。否则,问题是什么?
感谢您的任何建议。
如果在执行后立即声明'print(locals())',它是否有任何在该文件中定义的内容? – zondo