文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python中创建对象列表的实现示例

2023-03-14 11:17

关注

Python 中要创建对象列表:

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 类通常用于在 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.tasks


bob = 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.tasks


alice = 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.tasks


Employee.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.tasks


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