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__ 不是一个好主意。提供更多关于您的问题的信息可能有助于我们提供更多有用的建议。