python 特殊方法实例
import collections
from random import choice card = collections.namedtuple('Card',['rank','suit']) #构建一个命名元组 class FrenchDeck:
ranks = [str(n) for n in range(2,11)] + list('JQKA') # 创建所有纸牌数A-K
suit = '黑桃 方块 梅花 红心'.split() # 创建不同的纸牌花色 def __init__(self):
self._cards = [Card(ranks,suit) for suit in self.suits for rank in self.ranks] # 初始化整套扑克 def __len__(self):
return len(self._cards) # 获取整套牌的个数 def __getitem__(self,position):
return self._cards[position] # 获取特定纸牌 deck = FrenchDeck() # 实例化类
print(len(deck)) # 获取整套牌的数量 52
print(deck[0]) # 获取第一张牌 Card(rank='2',suit='黑桃')
choice(deck) # 随机选取其中某张牌 Card(rank='3',suit='梅花') Card(rank='5',suit='红心') #排序
suit_values = dict(黑桃 = 3,方块 = 2,梅花 = 1,红心 = 0) # 定义一个字典保存不同花色对应的权重值 def spades_high(card): # 定义升序函数
rank_value = FrenchDeck.ranks.index(card.rank) # 找到数字的索引值
return rank_value * len(suit_values) + suit_values[card.suit] # 返回索引值*4 +对应的权重值 # 对所有卡牌进行排序
for card in sorted(deck,key = spades_high):
print(card)
模拟数值类型
from math import hypot class Vector(object):
"""docstring for Vector"""
def __init__(self, x = 0,y = 0):
self.x= x
self.y = y def __repr__(self): #得到对象的字符串表现形式
return "Vector(%r,%r)" % (self.x,self.y) def __abs__(self): #用来计算向量的模
return hypot(self.x,self.y) def __bool__(self): # 判断向量实例的布尔值
return bool(abs(self)) def __add__(self,other):
x = self.x + other.x
y = self.y + other.y
return Vector(x,y) def __mul__(self,scalar):
return Vector(self.x * scalar,self.y * scalar)
python 特殊方法实例的更多相关文章
- Python进阶学习之特殊方法实例详析
Python进阶学习之特殊方法实例详析 最近在学习python,学习到了一个之前没接触过的--特殊方法. 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init_ ...
- Python swapcase()方法
首先,要明白Python swapcase() 方法用于对字符串的大小写字母进行转换. 其次,了解swapcase()方法语法:str.swapcase() 返回值:返回大小写字母转换后生成的新字符串 ...
- Python capitalize()方法
Python capitalize()方法 capitalize()方法返回字符串的一个副本,只有它的第一个字母大写.对于8位的字符串,这个方法与语言环境相关. 语法 以下是capitalize()方 ...
- Python isdigit()方法
描述 Python isdigit() 方法检测字符串是否只由数字组成. 语法 isdigit()方法语法: str.isdigit() 参数 无. 返回值 如果字符串只包含数字则返回 True 否则 ...
- python 类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可 ...
- Python 魔术方法指南
入门 构造和初始化 构造定制类 用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对象 总结 附录 介绍 此教 ...
- Python join()方法
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str.join(sequence) 参数 sequence -- 要连接的 ...
- Python魔法方法总结及注意事项
1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...
- Python扩展方法一二事
前言 跟着一个有强迫症的老板干活是一件极其幸福的事情(你懂的).最近碰到一个问题,简单的说就是对一个对象做出部分修改后仍然返回此对象,于是我就写了一个方法,老板看了之后只有一句话:不雅观,改成直接对此 ...
随机推荐
- 【转载】Spark运行架构
1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个 ...
- 创建文本节点createTextNode
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- 【Luogu1345】奶牛的电信(网络流)
[Luogu1345]奶牛的电信(网络流) 题面 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成 ...
- [BZOJ4804]欧拉心算
题面戳我 题意:求 \[\sum_{i=1}^{n}\sum_{j=1}^{n}\phi(\gcd(i,j))\] 多组数据,\(n\le10^7\). sol SBT 单组数据\(O(\sqrt n ...
- 面向服务的体系架构 SOA(二) --- 服务的路由和负载均衡
2. 服务的路由和负载均衡 1.2.1 服务化的演变 SOA设计思想:分布式应用架构体系对于业务逻辑复用的需求十分强烈,上层业务都想借用已有的底层服务来快速搭建更多.更丰富的应用,降低新业务开展的人力 ...
- 基于python自动化测试平台与虚拟化技术结合的思考
背景: 自动化测试行业内,个人觉得主力语言是python.java.这里讨论下基于python自动化框架设计与case开发,用过python的都知道它的好处,但是根据实际项目需要有了很多迎面而来的困难 ...
- 简单总结下 cookie、session
Cookies: 定义:cookie 中文意思是"小甜饼",但是,在互联网中它跟食品没有半毛钱关系,它主要是由web服务器应用程序创建,在客户端计算机中保存,问题来了, ...
- asp.net core 五 SignalR 负载均衡
SignalR : Web中的实时功能实现,所谓实时功能,就是所连接的客户端变的可用时,服务端能实时的推送内容到客户端,而不是被动的等待客户端的请求.Asp.net SignalR 源码 ...
- Lucene就是这么简单
什么是Lucene?? Lucene是apache软件基金会发布的一个开放源代码的全文检索引擎工具包,由资深全文检索专家Doug Cutting所撰写,它是一个全文检索引擎的架构,提供了完整的创建索引 ...
- 数据操纵:SELECT, INSERT, UPDATE, DELETE
SELECT 句法 SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE ...