for循环中的属性错误?不会 return 键作为属性
Attribute Error within a for loop? will not return key as attribute
我试过将键转换为字符串或将键重新分配给另一个变量。键将 return 样本中的一个属性,但键未被视为 sample_name...
for key in samples[1].__dict__:
print(key)
for row in samples:
print(row.key)
Output:
sample_name
Traceback (most recent call last):
print(row.key)
AttributeError: 'sample' object has no attribute 'key'
当您执行 row.key
时,您正在尝试查找 row
上的 'key'
属性。这相当于做getattr(row, 'key')
。由于 row
没有 'key'
属性,因此会产生错误。要在属性名称有字符串时动态查找属性,请使用 getattr(row, key)
,因为 key = 'sample_name'
,这等同于 getattr(row, 'sample_name')
。请注意,在第一次使用时 key
周围缺少引号。
试试看下面的代码对你有没有帮助:
for key in samples[1].__dict__:
print(key)
for row in samples:
print getattr(row, key)
好吧,我花了一点时间弄清楚你想要什么。
samples
是一个列表。列表 samples
中的每个对象都是一个 class 具有少量属性的实例。而你想输出他们每个属性的值?
如果我是对的你可以试试
for each in samples:
for key in each.__dict__:
try:
print(each.key)
except AttributeError, Argument:
print('AttributeError')
print(Argument)
但是我认为使用 __dict__
不是一个好主意。提供更多关于您的问题的信息可能有助于我们提供更多有用的建议。
我试过将键转换为字符串或将键重新分配给另一个变量。键将 return 样本中的一个属性,但键未被视为 sample_name...
for key in samples[1].__dict__:
print(key)
for row in samples:
print(row.key)
Output:
sample_name
Traceback (most recent call last):
print(row.key)
AttributeError: 'sample' object has no attribute 'key'
当您执行 row.key
时,您正在尝试查找 row
上的 'key'
属性。这相当于做getattr(row, 'key')
。由于 row
没有 'key'
属性,因此会产生错误。要在属性名称有字符串时动态查找属性,请使用 getattr(row, key)
,因为 key = 'sample_name'
,这等同于 getattr(row, 'sample_name')
。请注意,在第一次使用时 key
周围缺少引号。
试试看下面的代码对你有没有帮助:
for key in samples[1].__dict__:
print(key)
for row in samples:
print getattr(row, key)
好吧,我花了一点时间弄清楚你想要什么。
samples
是一个列表。列表 samples
中的每个对象都是一个 class 具有少量属性的实例。而你想输出他们每个属性的值?
如果我是对的你可以试试
for each in samples:
for key in each.__dict__:
try:
print(each.key)
except AttributeError, Argument:
print('AttributeError')
print(Argument)
但是我认为使用 __dict__
不是一个好主意。提供更多关于您的问题的信息可能有助于我们提供更多有用的建议。