我想知道是否有可能使用自己的類而不是像list
和tuple
這樣的內嵌類來解開星號。爲自己的類別提供明星解包
class Agent(object):
def __init__(self, cards):
self.cards = cards
def __len__(self):
return len(self.cards)
def __iter__(self):
return self.cards
而且能寫
agent = Agent([1,2,3,4])
myfunc(*agent)
,但我得到:
TypeError: visualize() argument after * must be a sequence, not Agent
哪些方法我必須爲了使拆包可能實現?
你的'__iter__'應該在你的卡片上返回一個迭代器,而不是它們的長度。 – kindall
可能重複[如何使類迭代?](http://stackoverflow.com/questions/19151/how-to-make-class-iterable) –
@Rogalski我不同意這是一個重複的,它是不明顯的使它迭代解決了明星拆包問題(儘管它)。 –