Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python setattr未检查变量是否存在_Python_Variables_Setattribute_Setattr - Fatal编程技术网

python setattr未检查变量是否存在

python setattr未检查变量是否存在,python,variables,setattribute,setattr,Python,Variables,Setattribute,Setattr,测试文件: my_name = '' my_home_address = '' my_home_phone = '' my_office_address = '' my_office_phone = '' 这是另一个文件,我们称之为test2 import test line1 = ['address', 'home', 'tom', 'downtown', '12345'] line1 = ['address', 'office', 'tom', 'uptown', '4567'] m

测试文件:

my_name = ''
my_home_address = ''
my_home_phone = ''

my_office_address = ''
my_office_phone = ''
这是另一个文件,我们称之为test2

import test

line1 = ['address', 'home', 'tom', 'downtown', '12345']
line1 = ['address', 'office', 'tom', 'uptown', '4567']

my_map = { 'home': ['my_name', 'my_home_address', 'my_home_phone'],
           'office1': ['my_name', 'my_office_address', 'my_office_phone'],
           'office2': ['my_name', 'my_office_address', 'my_office_phone'],
           }

if line1[1] in my_map.keys():
    for position, c_name in enumerate(line1):
        setattr(test, my_map[line1[1]][pos], my_map[line1[1]][pos])
问题:我有一个测试文件,其中包含保存数据的所有字段,例如:
my_name=''
我的家庭地址=''我的家庭电话=''我的办公室地址=''我的办公室电话=''

我的输入是
line1
,它可以有不同格式的信息,但是
line1[0]
line1[1]
肯定存在。
line1[1]
告诉我它是什么地址。现在,根据
line1[1]
的不同,我必须填充变量

我面临的问题是:由于有数百个字段,有时我会错过拼写,例如:而不是
“我的家庭电话”
我将其命名为“my_hoe_phne”,但它仍将信息加载到
测试中。my_hoe_phne=4567
相反,我希望它通过错误来说明这个变量在测试文件中不存在。我如何做到这一点


在运行
setattr
之前,您可以快速检查模块上是否存在该属性:

for pos, c_name in enumerate(line1):
    if not hasattr(test, my_map[line1[1]][pos]):
        raise AttributeError(
            'module `test` has no attribute %s' % my_map[line1[1]][pos])
    setattr(test, my_map[line1[1]][pos], my_map[line1[1]][pos])

运行
setattr