__setitem__ implementation in Python for Point(x,y) class

前端 未结 7 987
故里飘歌
故里飘歌 2020-12-14 12:44

I\'m trying to make a Point class in python. I already have some of the functions, like __ str__ , or __ getitem__ implemented, and it works great. The only problem I\'m fac

7条回答
  •  一生所求
    2020-12-14 13:22

    Here's an example:

    from collections import namedtuple
    
    Deck = namedtuple('cards',['suits','values'])
    
    class FrenchDeck(object):
    
        deck = [str(i) for i in range(2,11)]+list('JQKA')
        suits = "heart clubs spades diamond".split()
    
        def __init__(self):
            self.totaldecks = [Deck(each,every) for each in self.suits for every in self.deck]
        def __len__(self):
            return len(self.totaldecks)
        def __getitem__(self,index):
            return self.totaldecks[index]
        def __setitem__(self,key,value):
            self.totaldecks[key] = value
    
    CardDeck = FrenchDeck()
    CardDeck[0] = "asdd"       # needs`__setitem__()`
    print CardDeck[0]
    

    If you don't use the __setitem__(), you will get an error

    TypeError: 'FrenchDeck' object does not support item assignment
    

提交回复
热议问题