所以我有两个文件,file1.py和file2.py
我有两张来自file2.py的sam和dan的名单
所以当我从file1.py尝试这个时
AttributeError: 'module' object has no attribute 'myvar'
文件1.py
import file2
f_var=[]
myvar = raw_input("some string")
if myvar == "sam":
f_var = loopbov("sam")
def loopbov(myvar):
lst=[]
for each in file2.myvar:
te = fet(each):
lst.append(te)
return lst
def fet(vpf):
tmp=[]
# this gets me an list as an output
return tmp
文件2.py
sam=["33:89","21:70"]
dan=["34:43","23:56"]
我知道这是一个简单的错误,但是有人能解释如何通过解析一个对象来访问另一个文件吗
在
file2.py
中使用字典:现在,在
file1.py
:所以,在
file2.py
中定义了两个变量,对吗?sam
和dan
。你知道吗您可以看到,与Python相比,一切都是一个对象:
您将看到大量的内容,但除此之外,您将看到您的
sam
和dan
变量。没有myvar
名字,对吧?在您的问题中file1.py
的myvar
将包含您要访问的变量的名称。。。你知道吗这里是^{} 出现的地方:给定一个实例,如果您知道它的名称(如果您将名称存储在一个字符串中),如何获取它的一个字段。像这样:
getattr(file2, myvar)
因此您的
loopbov
函数在myvar
参数中传递要迭代的列表的名称将变成:正如@madphestics在他的评论中提到的,当它试图通过未定义的名称获取属性时,
getattr
将做什么可能值得一提:您将得到一个AttributeError
异常。试试看。把这个代码放在你的file1.py
的某个地方:getattr(file2, "foobar")
但是!如果您看到getattr
的文档,您将看到它接受一个可选参数:default
。可以这样理解,如果我没有找到属性,我不会给你一个错误,但是default
参数“。你知道吗如果您对这个主题感兴趣,也许还值得一读,关于import如何工作以及它创建的名称空间(请参见this和this)
相关问题 更多 >
编程相关推荐