#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 20 21:08:08 2020 @author: root """ import collections Card = collections.namedtuple('Card', ['rank','suit']) class FrenchDeck:
ranks = [str(n) for n in range(2,11)]+list('JQKA')
suits='spades diamods 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] beer_card = Card('7','diamods')
print ('beer_card',beer_card)
deck=FrenchDeck()
print (len(deck)) # example1
from random import choice
choice(deck)
print (choice(deck)) #__getitem__
for card in deck:
print(card) for card in reversed(deck):
print (card) Card('Q','hearts') in deck 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] for card in sorted(deck,key=spades_high):
print (card) """
Python的魔法方法__getitem__ 可以让对象实现迭代功能,
这样就可以使用for...in... 来迭代该对象了 在用 for..in.. 迭代对象时,如果对象没有实现
__iter__ __next__ 迭代器协议,
Python的解释器就会去寻找__getitem__ 来迭代对象
,如果连__getitem__ 都没有定义,这解释器就会报对象不是迭代器的错误: """
class Animals:
def __init__(self,animal_list):
self.animals_name=animal_list def __getitem__(self,index):
return self.animals_name[index] animals=Animals(['dog','cat','fish'])
for animal in animals:
print (animals)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 20 22:39:15 2020 @author: root
"""
from math import hypot class Vector:
def __init__(self,x=0,y=0):
self.x=x
self.y=y def __repr__(self):
return 'repr 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) a=Vector(1,2)
b=Vector(3,4) print (a+b)

最新文章

  1. PHP 站点相对包含,路径的问题解决方法(include,require)
  2. Redis主从在线互相切换
  3. python的类和对象——类成员番外篇
  4. input , textarea 边框问题
  5. java List 排序 Collections.sort() 对 List 排序
  6. HTML5之拖放
  7. CODEVS 1638 修复公路
  8. POJ 1006 Biorhythms(中国剩余定理)
  9. bzoj 1189
  10. Oracle运维 专业的事情交给专业的人来做
  11. lua --- 表操作
  12. 【清北学堂2018-刷题冲刺】Contest 4
  13. HTTPS(SSL / TLS)免费证书申请及网站证书部署实战总结
  14. win8 下面 listen 的队列长度貌似无效了 上c/s 代码 并附截图,有图有真相
  15. H5 password自动记录取消
  16. kubernetes实战(十四):k8s持久化部署gitlab集成openLDAP登录
  17. 微信小程序底部导航Tabbar
  18. java 和 javascript CryptoJS 进行HmacSHA1加密
  19. C++模板学习笔记
  20. 前端 crypto-js aes 加解密

热门文章

  1. Java线程的并发工具类
  2. python学习笔记02-简单游戏
  3. 摆脱鼠标之Dos学习
  4. Spring Boot WebFlux-08——WebFlux 中 WebSocket 实现通信
  5. 2021年Wordpress博客装修美化(二)
  6. AS打包签名
  7. JavaScript(1)高阶函数filter、map、reduce
  8. Spring学习日记03_IOC_属性注入_集合类型属性
  9. 24、Keepalived高可用介绍
  10. 14、redis安装及数据类型