在 Python 的类中创建增量 ID
Create an incremental ID in a Class in Python
要在类中创建增量 ID:
- 使用该
itertools.count()
方法获取一个自增count
对象。 - 将实例变量分配给对象
id
调用的结果next()
。
count
- 每个类实例都有一个唯一的
id
属性。
主程序
import itertools class Employee(): id_obj = itertools.count() def __init__(self, name, salary): self.id = next(Employee.id_obj) self.name = name self.salary = salary alice = Employee('Alice', 100) bob = Employee('Bobbyhadz', 100) carl = Employee('Carl', 100) print(alice.id) # 👉️ 0 print(bob.id) # 👉️ 1 print(carl.id) # 👉️ 2
我们使用
itertools.count
方法创建了一个返回自动递增count
对象的迭代器。
主程序
import itertools id_obj = itertools.count() print(next(id_obj)) # 👉️ 0 print(next(id_obj)) # 👉️ 1 print(next(id_obj)) # 👉️ 2
请注意,我们将方法id
中每个实例的属性分配给使用对象__init__()
调用的结果。next()
count
该
itertools.count()
方法采用默认start
设置为的参数。0
start
如果您需要创建起始于1
或任何其他值的增量 ID,则可以为参数指定一个值。
主程序
import itertools class Employee(): # 👇️ start incremental ID at 1 id_obj = itertools.count(1) def __init__(self, name, salary): self.id = next(Employee.id_obj) self.name = name self.salary = salary alice = Employee('Alice', 100) bob = Employee('Bobbyhadz', 100) carl = Employee('Carl', 100) print(alice.id) # 👉️ 1 print(bob.id) # 👉️ 2 print(carl.id) # 👉️ 3
1
我们为参数指定了一个值start
,因此自动递增的 ID 从1
.
每次创建类实例时,该__init__()
方法都会运行,并且其id
属性会设置为调用next()
该count
对象的结果。
迭代器对象表示数据流。每次我们将迭代器传递给next()
函数时,都会返回流中的下一个项目。