在 Python 中创建对象列表

在 Python 中创建对象列表

Create a list of objects in Python

要创建对象列表:

  1. 声明一个新变量并将其初始化为一个空列表。
  2. 使用for循环遍历range对象。
  3. 实例化一个类以在每次迭代时创建一个对象。
  4. 将每个对象附加到列表中。
主程序
class Employee(): def __init__(self, id): self.id = id list_of_objects = [] for i in range(5): list_of_objects.append(Employee(i)) print(list_of_objects) for obj in list_of_objects: print(obj.id) # 👉️ 0, 1, 2, 3, 4

我们使用range()该类来获取range可以迭代的对象。

range类通常用于在循环中循环特定次数for

主程序
print(list(range(5))) # 👉️ [0, 1, 2, 3, 4] print(list(range(1, 6))) # 👉️ [1, 2, 3, 4, 5]
如果您需要从特定数字开始,请将 2 个参数(开始和停止)传递给range()类。

在每次迭代中,我们使用当前数字创建
Employee该类的实例并将结果附加到列表中。

list.append
()
方法将一个项目添加到列表的末尾。

该类Employee可以使用单个id参数实例化,但根据您的用例,您在创建对象时可能必须传递更多参数。

如果需要更改print()列表中对象的函数输出,请__repr__()在类中定义方法。

主程序
class Employee(): def __init__(self, id): self.id = id def __repr__(self): return str(self.id) list_of_objects = [] for i in range(5): list_of_objects.append(Employee(i)) # 👇️ [0, 1, 2, 3, 4] print(list_of_objects)

我们将id每个对象的 用作print()函数的输出。

请注意,该__repr__()方法必须返回一个字符串。

如果您的类没有在其方法中定义所有必要的属性,请使用该函数为每个对象添加属性。 __init__()setattr()
主程序
class Employee(): def __init__(self, id): self.id = id def __repr__(self): return str(self.id) list_of_objects = [] for i in range(3): obj = Employee(i) setattr(obj, 'topic', 'Python') setattr(obj, 'salary', 100) list_of_objects.append(obj) # 👇️ [0, 1, 2] print(list_of_objects) for obj in list_of_objects: print(getattr(obj, 'topic')) print(getattr(obj, 'salary'))

setattr函数向对象添加属性。

该函数采用以下 3 个参数:

姓名 描述
目的 添加属性的对象
姓名 属性的名称
价值 属性值

name字符串可以是现有的或新的属性。

getattr函数返回对象提供的属性的值。

该函数将对象、属性名称和对象上不存在该属性时的默认值作为参数。

或者,您可以使用列表理解。

使用列表理解创建对象列表

要创建对象列表:

  1. 使用列表理解来迭代range对象。
  2. 在每次迭代中,实例化一个类以创建一个对象。
  3. 新列表将包含所有新创建的对象。
主程序
class Employee(): def __init__(self, id): self.id = id def __repr__(self): return str(self.id) list_of_objects = [ Employee(i) for i in range(1, 6) ] print(list_of_objects) # 👉️ [1, 2, 3, 4, 5] for obj in list_of_objects: print(obj.id) # 1, 2, 3, 4, 5

我们使用列表理解来迭代range长度为
5.

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们实例化Employee该类以创建一个对象并返回结果。

新列表包含所有新创建的对象。

您选择哪种方法是个人喜好的问题。

列表推导非常直接且易于阅读,但
for如果您需要向每个对象添加额外的属性或者创建过程更加复杂,则必须使用循环。

发表评论