美文网首页
第二章:魔法方法

第二章:魔法方法

作者: 莫辜负自己的一世韶光 | 来源:发表于2019-03-14 14:46 被阅读0次

1.什么是魔法方法

魔法方法就是可以给你的类增加特殊功能的方法,通常是系统自定好的已双下划线开头以及双下划线结尾的的方法.如果你自己写的类重写了这些方法,那么这个方法就会在特殊的情况下被python调用,你可以自己定义想要的行为,而这一切都是自动发生的.例如__init__(),__new__(),__call__(),__getItem__()
注意: 魔法方法和继承没有关系,只要是在一个类中实现了这些方法,它就会在特殊的情况下被调用

# encoding:utf-8
__author__ = 'Fioman'
__time__ = '2019/3/14 11:39'


class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list

    # 让这个类创建的对象,是可以迭代的,就是可以遍历的
    def __getitem__(self, item):
        return self.employee[item]


company = Company(['tom', 'bob', 'jane'])
employee = company.employee
for em in employee:
    print(em)

company2 = company
for em in company2:  # 如果company类没有实现__getitem__方法,这里会报错误
    print(em)

2.Python常见的魔法方法

1. 字符串表示 __repr__ 和 __str__
区别:它们都是可以将我们的类对象表示成为一个字符串.但是__str__一般是用来给用户看的,便于理解.
__repr__一般是用来给程序员看的,在开发模式下,直接写一个对象的时候,就会调用它的__repr__方法.

注意: 如果一个类中既有__str__方法,又有__repr__方法.
一般在调用print进行显示的时候,会优先调用__str__方法
repr方法一般是表示一个对象的创建信息,程序员可以看懂的方式,比如返回这个对象的继承关系等.

2.len函数的特殊性
我们在使用len(内置类型) 比如list,dict,set,tuple的时候,我们的len()一般不会遍历这些数据的个数,因为这些数据结构都是C语言实现的,在内部存放一个变量,来时刻记录着这些容器的大小,所以len会直接返回这个变量的结果,所以效率是非常高的

相关文章

  • Python提升2--魔法方法

    第二章 魔法方法魔法方法大全,参考于:Python 魔法方法详解https://fishc.com.cn/thre...

  • 第二章:魔法方法

    1.什么是魔法方法 魔法方法就是可以给你的类增加特殊功能的方法,通常是系统自定好的已双下划线开头以及双下划线结尾的...

  • 在睡梦中修炼武功秘籍的家伙|妈妈力打卡008

    #妈妈力,她课堂# #女性成长社群# 6.11 魔法岁月 第二章 “魔法师”登场了 最初的18个月 “魔法师”的真...

  • 在睡梦中修炼武功秘籍的家伙|妈妈力打卡008

    #妈妈力,她课堂# #女性成长社群# 6.11 魔法岁月 第二章 “魔法师”登场了 最初的18个月 “魔法师”的真...

  • Python之构造和析构,算术运算,属性访问

    魔法方法 魔法方法总是被双下划线包围,例如__init__(self[,...])魔法方法就是当你在进行一些操作的...

  • python 魔法方法

    内置魔法方法参见:官网:Python数据模型Python 魔术方法指南 ——稍微有点乱 Python魔法方法指南...

  • 2018-09-07-类和对象

    一、内置类属性(魔法属性) 内置类属性就是魔法属性魔法属性:属性名的前面和后面都有两个下划线魔法方法:方法的前面和...

  • “魔法”方法

    一、 init方法 init 方法会被默认调用 二、str方法 str 方法是打印对象是用的 三、del方法 只要...

  • 鱼C-python之魔法方法

    何为魔法方法? 魔法方法总是被双下划线包围,例如:__init__ 构造和析构 重写 __new__ 方法,返回的...

  • Python魔法方法(持续更新)

    Python魔法方法(持续更新) 简介 魔法方法是python内置方法,不需要主动调用,存在的目的是为了给pyth...

网友评论

      本文标题:第二章:魔法方法

      本文链接:https://www.haomeiwen.com/subject/czlqmqtx.html