流畅的python(一)python数据模型
生活随笔
收集整理的這篇文章主要介紹了
流畅的python(一)python数据模型
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
讀后感
我覺(jué)得使用python數(shù)據(jù)模型,還不如使用python對(duì)象模型。在python中,萬(wàn)物皆對(duì)象,一張牌是一個(gè)對(duì)象,一副牌也是一個(gè)對(duì)象。python巧妙的運(yùn)用已經(jīng)存在的數(shù)據(jù)模型,構(gòu)建對(duì)象,只需要重寫(xiě)相關(guān)方法就可以實(shí)現(xiàn)其功能。
python風(fēng)格的紙牌
import collectionsCard = collections.namedtuple('Card', ['rank', 'suit'])class FrenchDeck:ranks = [rank for rank in range(2, 11)] + list('JQKA')suits = list('shdc')def __init__(self):self._card = [Card(rank, suit) for rank in self.ranksfor suit in self.suits]def __getitem__(self, item):return self._card[item]def __len__(self):return len(self._card)if __name__ == '__main__':deck = FrenchDeck()print(len(deck))for c in deck:print(c)print(deck[0])print(deck[-1])向量
from math import hypotclass Vector:def __init__(self, x=0, y=0):self._x = xself._y = y# 向量表示def __repr__(self):return 'Vector(%r,%r)' % (self._x, self._y)# 向量加法def __add__(self, other):x = self._x + other._xy = self._y + other._yreturn Vector(x, y)# 向量乘法def __mul__(self, scalar):return Vector(self._x * scalar, self._y * scalar)# 向量絕對(duì)值def __abs__(self):return hypot(self._x, self._y)# 零向量def __bool__(self):return bool(self._x) and bool(self._y)if __name__ == '__main__':v = Vector(3, 4)print(abs(v))print(v+v)print(v)print(bool(v))print(v*3)代碼編寫(xiě)事項(xiàng)
列表推導(dǎo)式不支持+操作
向量中的加法和乘法返回的是一個(gè)新的向量對(duì)象,需要調(diào)用構(gòu)造方法。
零向量還可以對(duì)絕對(duì)值求值
總結(jié)
以上是生活随笔為你收集整理的流畅的python(一)python数据模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C11新特性(部分)
- 下一篇: 2017 实习面试问题总结(阿里、头条、