博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大流的读书笔记
阅读量:6516 次
发布时间:2019-06-24

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

一丶序幕

1.特殊方法名的作用

         特殊方法名能让你自己的对象实现和支持以下的语言构架,并与之交互:

  1. 迭代
  2. 集合类
  3. 属性访问
  4. 运算符重载
  5. 函数和方法的调用
  6. 对象的创建和销毁
  7. 字符串表示形式和格式化
  8. 管理上下文(即 with 块)

 

import collections#创建一个类表示纸牌#nametuple方法用于构建只有少数属性但没有方法的对象:#>>> beer_card = Card("7","diamonds")#>>> beer_card#Card(rank='7', suit='diamonds')#Card = collections.namedtuple("Card",["rank","suit"])#花色英文展示#hearts红心#diamonds红方#spades黑桃#clubs草花#查看一叠牌有多少张#主要还是关注FrenchDeck类,len()函数可以查看一叠牌有多少张#>>> deck = FrenchDeck()#>>> len(deck)#52#抽取固定顺序的牌#从一叠牌中抽取第一张和最后一张牌非常容易,这都是由__getitem__方法提供的#>>> deck[0]#Card(rank='2', suit='spades')#>>> deck[-1]#Card(rank='A', suit='hearts')#抽取随机的牌#from random import choice#choice(deck)#Card(rank='6', suit='spades')#>>> choice(deck)#Card(rank='6', suit='hearts')#>>> choice(deck)#Card(rank='8', suit='diamonds')#代码演示Card = collections.namedtuple("Card",["rank","suit"])class FrenchDeck:    ranks = [str(n) for n in range(2,11)] + list("JQKA")    suits = "spades diamonds clubs hearts".split()    def __init__(self):        self._cards = [Card(rank,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]        suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)        def spades_high(card):        rank_value = FrenchDeck.ranks.index(card.rank)        return rank_value * len(suit_values) + suit_values[card.suit]

  

 

转载于:https://www.cnblogs.com/cangshuchirou/p/9209889.html

你可能感兴趣的文章
java actor模型和消息传递实现分析
查看>>
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>
HttpClient总是无限卡死
查看>>
图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cro
查看>>
过滤三剑客之grep专题
查看>>
redhat6.5手动配置网络
查看>>
find高级用法
查看>>
第一章
查看>>
Spring Boot基础教程-Spring Tool Suite工具的安装
查看>>
Android 事件处理,事件模型详解
查看>>
今天开通了博客
查看>>
TCP/IP、Http的区别
查看>>
SDK 概念
查看>>
day18:获取网卡IP地址|检查目录|下载文件|猜数字|根据名字得数字
查看>>
我的友情链接
查看>>
XMPP协议学习笔记一
查看>>
dom4j解析XML
查看>>
Oracle DBA课程系列笔记(12_1)
查看>>
mysql5.5源码编译安装详细步骤
查看>>
Oracle RAC Study之--Cache Fusion
查看>>