gpt4 book ai didi

python - 在对象中实现打包/解包

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:11 26 4
gpt4 key购买 nike

我有一个只包含属性的类,我想对其进行打包/解包。我应该实现什么 collections.abc 才能获得此行为?

class Item(object):

def __init__(self, name, age, gender)
self.name = name
self.age = age
self.gender = gender

a, b, c = Item("Henry", 90, "male")

我想避免使用 namedtuple

最佳答案

您可以解压任何 Iterable .这意味着您需要实现 __iter__ 方法,并返回一个迭代器。在您的情况下,这可能只是:

def __iter__(self):
return iter((self.name, self.age, self.gender))

或者你可以让你的类(class)成为Iterator ,然后 __iter__返回 self 并且您需要实现 __next__;这是更多的工作,可能不值得付出努力。

有关详细信息,请参阅 What exactly are Python's iterator, iterable, and iteration protocols?


根据我上面链接的问题,您还可以使用 __getitem__ 实现可迭代:

def __getitem__(self, index):
return (self.name, self.age, self.gender)[index]

关于python - 在对象中实现打包/解包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com