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 特殊方法实例的更多相关文章

  1. Python进阶学习之特殊方法实例详析

    Python进阶学习之特殊方法实例详析 最近在学习python,学习到了一个之前没接触过的--特殊方法. 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init_ ...

  2. Python swapcase()方法

    首先,要明白Python swapcase() 方法用于对字符串的大小写字母进行转换. 其次,了解swapcase()方法语法:str.swapcase() 返回值:返回大小写字母转换后生成的新字符串 ...

  3. Python capitalize()方法

    Python capitalize()方法 capitalize()方法返回字符串的一个副本,只有它的第一个字母大写.对于8位的字符串,这个方法与语言环境相关. 语法 以下是capitalize()方 ...

  4. Python isdigit()方法

    描述 Python isdigit() 方法检测字符串是否只由数字组成. 语法 isdigit()方法语法: str.isdigit() 参数 无. 返回值 如果字符串只包含数字则返回 True 否则 ...

  5. python 类和实例

    面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可 ...

  6. Python 魔术方法指南

    入门 构造和初始化 构造定制类 用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对象 总结 附录 介绍 此教 ...

  7. Python join()方法

    描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str.join(sequence) 参数 sequence -- 要连接的 ...

  8. Python魔法方法总结及注意事项

    1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...

  9. Python扩展方法一二事

    前言 跟着一个有强迫症的老板干活是一件极其幸福的事情(你懂的).最近碰到一个问题,简单的说就是对一个对象做出部分修改后仍然返回此对象,于是我就写了一个方法,老板看了之后只有一句话:不雅观,改成直接对此 ...

随机推荐

  1. Nslookup命令小结

    Nslookup命令小结 0.nslookup的定义 Nslookup是由微软发布用于对DNS服务器进行检测和排错的命令行工具.   两种模式: 一.非交互模式     nslookup –qt=类型 ...

  2. CodeForces 940E

    题意略. 这个题目我开始题意理解得有点问题.本题的实质是在这个数列中选择一些数字,使得选出的这些数字之和最大,用dp来解. 我们先要明确:当我选择数列长度为2 * c时,不如把这个长度为2 * c的劈 ...

  3. CSS3动画以及animation事件

    1.CSS3动画以及animation事件的定义 animation :name duration timing-function delay iteration-count direction an ...

  4. Python编程核心内容之二——切片、迭代和列表生成式

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 最近太忙啦.很多事情需要自己处理,感觉时间不够用啊~~~~今后,博客更新时间可能会慢下来,哈哈,正所谓"人 ...

  5. UNDO及MVCC、崩溃恢复

    UNDO特性:避免脏读.事务回滚.非阻塞读.MVCC.崩溃恢复 事务工作流程(图2) MVCC原理机制 崩溃恢复:redo前滚.undo回滚 长事务.大事务:危害.判断.处理 UNDO优化:实现und ...

  6. chkconfig命令核心案列及核心原理

    chkconfig sshd on  设置sshd开机自启动 chkconfig sshd off  设置sshd开机不启动 chkconfig --level 35 sshd on    设置ssh ...

  7. 一年iOS工作经验,如何一举拿下百度、美团、快手等Offer面经(附面试题)

    前言: 先简单说说我最近的面试经历吧.面试的公司很多,大部分最后都能得到令人满意的结果,我将这些体会记录下来,面了这么多公司,如果不留下什么,那岂不是太浪费了.对于我来说,这也是一次自我检查,在这次面 ...

  8. P2P技术简介

    P2P技术简介 NAT( Network Address Translation)穿越(俗称打洞)技术 前言: p2p已经存在于我们生活的方方面面:我们通过下载在工具(比如迅雷,bitorent,各种 ...

  9. EasyUI 二次加载toolbar异常问题解决

    问题:easyUI初次渲染正常,之后会出问题,toolbar重复加载 解决办法:每次加载之前先从body中删除已经渲染的工具栏-->重新加载-->手动渲染工具栏 代码: function ...

  10. es6 Generator生成器函数

    生成器函数使用function*声明. 在生成器函数内部,有一种类似return的语法:关键字yield.二者的区别是,普通函数只可以return一次,而生成器函数可以yield多次(当然也可以只yi ...