python model函数_《流畅的Python》Data model(数据/对象模型)

第一章 Data model

⚠️整本书都是讲解Data model,第一章是一个概述。

⚠️不适合初学者。因为special method和meta programming技巧只是Python代码的一部分。不是全部。

目标:学习第一章内容。之后是否深入还是先学习一些其他的知识待定。

纸牌的例子

可以把data model是对Python的框架的描述。

无论在哪种框架下写程序,程序员都会花费大量时间操作implement很多的由框架自身调用的方法。

当你使用Python data model时也是一样的。

Python解释器调用特殊方法来运行基本的对象的操作,  这种特殊方法经常被special syntax激活。这种特殊方法的名字的写法:__xxx__。

例如:

object.__getitem__(self, key)这是一个特殊方法。a是一个dict,我们希望读取这个对象的key"a"对应的值。下例使用了a["a"],一个特殊的语法。解释器发现这个语法 就会调用特殊方法type(a).__getitem(a, "a"),来完成相应的读取操作。

>>> a = dict(a=1,b=2)>>>a

{'a': 1, 'b': 2}>>> a['a'] == type(a).__getitem__(a, 'a')

True

Data model中的special methods name让你的对象执行/实现,支持,交互basic language构架,例如:

Iteration

Collections 集合类

Attribute access

Operator overloading 重载操作符

函数和方法的调用

Object创建和销毁

字符串格式化

Managed contexts被管理的上下文代码(就是with语法块)

⚠️这些特殊方法,也被叫做magic method,或者dunder method。只是一种叫法。

importcollections#扑克牌类,每张牌有2个属性:数字/字母rank,花色suit

Card = collections.namedtuple('Card', ['rank', 'suit'])classFrenchDeck(object):#2个类属性,储存牌的rank和suit。

ranks = [str(n) for n in range(2, 11)] + list('JQKA') #13种rank

suits = 'spades diamonds clubs hearts'.split() #4种suit

#实例化一个对象,实例变量_cards(数据属性)是一个list,储存了52张Card(类型是namedtule)

def __init__(self

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值