尚学堂百战程序员分享:Python的数据模型

尚学堂百战程序员分享:Python的数据模型
2018年04月25日 11:09 心空的凝望

接触 Python 有一段时间了,总结了很多关于Python的数据模型,但是到现在也没怎么用 Python 写过一些有用的东西。基础虽然还行,但更深入的就不怎么了解了。于是打算看一下《流畅的Python》。首先是数据模型,主要是 Python 的魔术方法(特殊方法),它们以双下划线开头和结束,能让我们自己写的类拥有类似Python内置对象那样的属性和方法。

首先出场的是getitem和len。有了getitem方法,我们写的类就能实现类似列表那样的索引形式,如obj[0],同时还能进行迭代和切片。而实现了len之后,就可以使用 Python 内置的函数len()来获取对象的长度,len()调用的就是len方法。

特殊方法是由 Python 解释器去调用的,我们只需使用 Python 内置的方法就好。init除外,我们会使用的多。

想要将一些 Python 内置的函数用到我们写的类中,只需实现对应的特殊方法就行。第三个出场的的是repr,把对象用字符串的形式表示出来。尚学堂•百战程序员陈老师指出当没有实现str时,调用str()函数会回退到调用repr。之后是and和mul,分别对应 Python 的+和*操作符。

第六个是bool,用于实现自己定义的布尔值。有的内置方法对于内置的对象,可能不需要调用任何方法,而是直接返回对象的某个值。len()函数就是如此,提高了效率,又兼容了,用户自定义的类。

之前也接触过特殊方法,但是没有细究,现在算是理解更深了。关于Python的数据模型先分享这些。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部