我正在处理一些代码,该代码在文本文件(“ save [#]”)中以以下格式检索一行: “ [名称],[布尔值或整数值]” (目的是能够检索它以保存游戏状态) 问题是,每当我尝试从模块返回值时,都会得到以下信息:
Traceback (most recent call last):
File "//IHS-FS-001.ihs.local/Cohort2020$/2ELGAG1/python/srctg/test.py", line 5, in <module>
retrieve()
File "//IHS-FS-001.ihs.local/Cohort2020$/2ELGAG1/python/srctg/test.py", line 3, in retrieve
if retrieve.check("test", 1) == True:
AttributeError: 'function' object has no attribute 'check'
test属性是用于测试游戏代码的测试模块:
import retrieve.py
def retrieve():
if retrieve.check("test", 1) == True:
return True
retrieve()
retrieve属性本身的设置如下:
import error
def check(i_name, save):
save = str(save)
save_n = "save" + save + ".txt"
save_f = open(save_n, "r")
list = save_f.readlines()
for item in range(len(list)):
list[item] = list[item].strip()
list[item] = list[item].split(",")
list[item][1] = list[item][1]
for item in range(len(list)):
if i_name == list[item][0]:
i_return = list[item][1]
if bool_check(i_return) == True:
i_return = bool(i_return)
elif int_check(i_return) == True:
i_return = int(i_return)
else:
print(error.code("001"))
return "error"
return i_return
def int_check(value):
while True:
try:
value = int(value)
return True
break
except ValueError:
return False
break
def bool_check(value):
while True:
try:
value = bool(value)
return True
break
except ValueError:
return False
break
答案 0 :(得分:0)
不要在导入中包含.py
。这会尝试在名为py
的包中导入名为retrieve
的模块,这可能不是您的意思。
import retrieve as retrieve_module
def retrieve():
if retrieve_module.check("test", 1) == True:
return True
此外,请勿编写与刚导入的模块同名的函数。更改一个或另一个的名称。这就是为什么它找不到.check
属性的原因。它在retrieve
函数内部而不是retrieve
模块内部,因为在调用该函数之前,您已在全局命名空间中覆盖了它(通过执行函数定义)。