文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python中如何创建对象列表

2023-07-05 12:00

关注

这篇文章主要讲解了“Python中如何创建对象列表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中如何创建对象列表”吧!

Python 中要创建对象列表:

class Employee():    def __init__(self, id):        self.id = idlist_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 类通常用于在 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() 方法将一个项目添加到列表的末尾。

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

如果我们需要更改列表中对象的 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 个参数:

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

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

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

或者,我们可以使用列表推导。

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

Python 中要创建对象列表:

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

我们使用列表推导来迭代长度为 5 的范围对象。

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

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

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

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

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

在 Python 中将项目附加到类中的列表

将项目附加到类中的列表:

在类的 __init__() 方法中初始化列表。

定义一个方法,它接受一个或多个项目并将它们附加到列表中。

class Employee():    def __init__(self, name, salary):        self.name = name        self.salary = salary        self.tasks = []  # ????️ initialize list    def add_task(self, task):        self.tasks.append(task)        return self.tasksbob = Employee('Jiyik', 100)bob.add_task('develop')bob.add_task('ship')print(bob.tasks)  # ????️ ['develop', 'ship']

我们在类的 __init__() 方法中将任务列表初始化为实例变量。

实例变量对于我们通过实例化类创建的每个实例都是唯一的。

class Employee():    def __init__(self, name, salary):        self.name = name        self.salary = salary        self.tasks = []  # ????️ initialize list    def add_task(self, task):        self.tasks.append(task)        return self.tasksalice = Employee('Fql', 1000)alice.add_task('design')alice.add_task('test')print(alice.tasks)  # ????️ ['design', 'test']bob = Employee('Jiyik', 100)bob.add_task('develop')bob.add_task('ship')print(bob.tasks)  # ????️ ['develop', 'ship']

这两个实例有单独的任务列表。

我们还可以使用类变量而不是实例变量。

类变量由类的所有实例共享。

class Employee():    # ????️ class variable    tasks = []    def __init__(self, name, salary):        self.name = name        self.salary = salary    @classmethod    def add_task(cls, task):        cls.tasks.append(task)        return cls.tasksEmployee.add_task('develop')Employee.add_task('ship')print(Employee.tasks)  # ????️ ['develop', 'ship']alice = Employee('Fql', 1000)print(alice.tasks)  # ????️ ['develop', 'ship']bob = Employee('Jiyik', 100)print(bob.tasks)  # ????️ ['develop', 'ship']

tasks 变量是一个类变量,所以它被所有实例共享。

我们将 add_task() 方法标记为类方法。 传递的第一个参数类方法是类。

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

但是,我们可能经常需要做的事情是将多个项目附加到列表中。

我们可以使用 list.extend() 方法将可迭代对象的项目附加到列表中。

class Employee():    def __init__(self, name, salary):        # ????️ 实例变量(每个实例都是唯一的)        self.name = name        self.salary = salary        self.tasks = []  # ????️ 初始化列表    def add_tasks(self, iterable_of_tasks):        self.tasks.extend(iterable_of_tasks)        return self.tasksbob = Employee('Jiyik', 100)bob.add_tasks(['develop', 'test', 'ship'])print(bob.tasks)  # ????️ ['develop', 'test', 'ship']

我们使用 list.extend() 方法将多个值附加到任务列表。

list.extend 方法采用可迭代对象(例如列表或元组)并通过附加可迭代对象中的所有项目来扩展列表。

感谢各位的阅读,以上就是“Python中如何创建对象列表”的内容了,经过本文的学习后,相信大家对Python中如何创建对象列表这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯