item系列方法

getitem

当执行类加方括号时(a[’ ']),会调用A中的__getitem__方法

 class A:
 	def __getitem__(self, item):
 		print('现在执行的是__getitem__方法,item即为方括号中的内容', item)
 		return 'hello'


a = A()
print(a['哈哈哈'])
###############################################################
打印结果中,a['哈哈哈']先执行了 __getitem__中的print, item即为'哈哈哈',
返回值'hello'被打印出来

setitem

当执行a[1] = '2go’时,会执行类中的__setitem__方法

def A:
	def __setitem__(self, key, value):
		print('执行__setitem__方法', key, value)
a = A()
a[1] = '2go'
###############################################################
1传入key
'2go'传入value	

delitem

当删除对象加方括号时,执行类中的__delitem__方法

class A:
	def __delitem__(self, item):
		print('正在删除', item)

a = A()
del a['item']
###############################################################
只有执行del 对象加方括号时,才会调用 __delitem__(self, item),item即为方括号中的内容

一个应用: 洗牌抽牌

                                                                              
import random                                                                 
class Poker:                                                                  
                                                                                                                                                                                                                   
    def __init__(self):                                                       
        self.lst = []  # 54张牌                                                 
        self.__color = ['黑桃', '红桃', '花子', '片子']                               
        self.__number = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J','Q'
                         ,'K', 'A']                                           
        for i in self.__number:                                               
            for j in self.__color:                                            
                self.lst.append(j + str(i))                                   
        # print(self.lst)                                                     
                                                                              
    def __getitem__(self, item):  # 执行 p['']时调用                               
        # print('第%s张牌是' % item)                                              
        return '第%s张牌是%s' % (item, self.lst[item])                            
                                                                              
    def __setitem__(self, key, value):  # 执行p[''] = ''时调用                     
        pass                                                                  
                                                                              
    def __mix(self):                                                          
        random.shuffle(self.lst)                                              
        print('已洗牌')                                                          
                                                                              
    @property                                                                 
    def mix(self):                                                            
        self.__mix()                                                          
                                                                              
                                                                              
p = Poker()                                                                   
p.mix                                                                         
print(p[1])                                                                   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇锅锅拆飞机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值