【发布时间】:2021-02-11 12:14:24
【问题描述】:
import numpy as np
class test:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
arr = []
for i in range(10):
x = np.random.uniform(0, 5, 2)
t = test(x[0], x[1])
arr.append(t)
print(arr[:].num1)
这给了我错误“列表”对象没有属性 num1。
如果我改为使用 for 循环来循环遍历列表,那么它会打印出来就好了:
for i in range(len(arr)):
print(arr[i].num1)
什么给了?
【问题讨论】:
-
因为您无法访问这样的对象列表的属性。这不是python的工作方式。您需要使用循环。
-
顺便说一句
for i in range(len(...))是 anti-pattern。在许多情况下,包括这个,for element in arr会更合适且更干净。那你就做print(element.num1)。 -
你的
arr只是普通的python 列表——不是numpy 数组,也不是pandas 数据框——而普通的python 列表没有方法从列表中的所有元素中获取num1。您需要for-loop 或列表理解,例如[item.num1 for item in arr]
标签: python list error-handling