博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些内置方法的使用,一个惊艳的小程序,内置方法的一些使用
阅读量:5945 次
发布时间:2019-06-19

本文共 1565 字,大约阅读时间需要 5 分钟。

import json from collections import namedtuple   # 命名元祖 Card = namedtuple('Card','rank suit') c1 = Card(2,'红心') class FranchDeck:     ranks = [str(rank) for rank in range(2,11)] + list('JQKA')     suits = ['红心','方块','黑桃','梅花']     def __init__(self):         self.__cards = [Card(rank,suit) for rank in FranchDeck.ranks for suit in FranchDeck.suits]     def __len__(self):         return len(self.__cards)     def __getitem__(self, item):        # 可以使用调用属性的方式调用self.__cards
       return self.__cards[item]     def __setitem__(self, key, value):          self.__cards[key] = value     def __str__(self):         return str(self.__cards) deck = FranchDeck() print(deck[0]) # 随机抽牌 用到random 模块的choice  # choice方法依赖 len方法,所以实现一个自己的len方法,__len__ from random import choice choice(deck) print(choice(deck)) # 随机洗牌用到random 模块的choice from random import shuffle      # 依赖  __setitem__方法 shuffle(deck) print(deck) print(deck[:5]) 另一个例子
# 如果两个人的姓名,性别一致,就认为两个属性相等,去重 class A:     def __init__(self,name,sex,age):         self.name = name         self.sex = sex         self.age = age     def __eq__(self, other):         if self.name == other.name and self.sex == other.sex:             return  True         return False     def __hash__(self):         return hash(self.name + self.sex) a = A('egg','男',38) b = A('egg','男',37) print(set((a,b)))
结果:{<__main__.A object at 0x00000140AE056F60>} 如果只是使用set集合去重,得不到想要的结果,结果自己实现了,__hash__,__eq__方法,得到了相同的内存地址,证明可以用了, 但是这两个方法,缺一个都不行 这个例子证明了,set集合的去重,应该是使用了,__hash__,__eq__方法,的共同结果
 

转载于:https://www.cnblogs.com/bozhengheng/p/10259793.html

你可能感兴趣的文章
JavaScript中的作用域,闭包和上下文
查看>>
Python中使用ElementTree解析xml
查看>>
Python LOGGING使用方法
查看>>
Dominating Patterns
查看>>
截取指定字符串
查看>>
metrics-server最新版本有坑,慎用
查看>>
linux虚拟文件系统浅析
查看>>
HBase数据压缩编码探索
查看>>
sprint计划会议总结
查看>>
团队项目冲刺1
查看>>
fon循环总是返回最后值问题
查看>>
Android新权限机制 AppOps
查看>>
“蓝桥杯”软件大赛入门训练4道题
查看>>
Unable to get the CMake version located at
查看>>
爬虫基本原理
查看>>
Heritage from father
查看>>
css选择器
查看>>
使用多线程
查看>>
Django--Uploaded Files以及Handlers
查看>>
在IIS(64位)上部署WCF服务访问Oracle数据库
查看>>