联系我们 - 广告服务
您的当前位置:官网首页 > 资讯 > 时局 >

Python进阶

来源: 编辑: 时间:2019-08-13
导读: 区别:第二种直接对对象进行了for循环,第一种对对象里面的一个属性进行循环。 就是第二种company_magic类生成的对象,是有可以迭代......

区别:第二种直接对对象进行了for循环,第一种对对象里面的一个属性进行循环。

           就是第二种company_magic类生成的对象,是有可以迭代这个特性的。

    因为__getitem__帮我们实现了一个逻辑,每次我们实现for循环的时候,for会去找company2这个对象中的__getitem__方法,并且传入0、1、2...直到抛了异常然后结束。这是解释器帮我们实现的功能。

ps.想想看如果__getitem__这个函数不管传入什么item都不报异常会怎么样?

 

二  python的数据模型和数据模型这种设计模式赋予python的特性

1.什么是数据模型?

数据模型其实是对 python 框架的描述,它规范了这门语言自身构建模块的接口,这些模块包括但不限于序列、迭代器、函数、类等。

而魔法函数就是数据模型的一个概念。java中常被叫魔术方法,python常叫数据模型。

2.数据模型对python的影响

这点是很重要的需要明白python的类有些特性是可以被灵活设计的,只要在编码中让它遵循了某种特定的协议。

 

三 python常用的魔法函数

__init__:最常用。

__str__:被print函数调用;这个魔法函数必须返回为string,否则抛异常。

__len__:可以对对象使用 len函数。在dict、list等类型中也实现了这个方法。

在pycharm中,输入dict ,用ctrl+b 跳到dict的定义,可以看到dict具有哪些魔法方法。或者用dir也可以看到。

还有很多比较重要的魔法方法例如 __setattr__ 、__getattr__、__setitem__、__getitem__、__iter__ 超多简化我们编程的魔法函数。

 

四  用__len__看魔法函数大致做了哪些事情?

在三中我们看到,dict的定义中的魔法函数__len__定义的内容为空,list也是。

实际上,我们在这里看到的相当于只是一个接口的定义而已,真正的实现是在cpython中。

责任编辑:

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © 2018 凯发网址娱乐凯发网址娱乐-凯发网娱乐下载-凯发网娱乐官方网站 All Rights Reserved Power by DedeCms
本站所有资讯来源于网络 如有侵权请联系QQ:9490489
Top