美文网首页python编程
Python:魔法函数

Python:魔法函数

作者: dex0423 | 来源:发表于2020-07-19 18:09 被阅读0次

1. 简介

1.1. 什么是魔法方法

  • Python是一门追求简单、高效的语言,它并不像某些语言如Java、C++等,需要让类实现接口并逐一实现接口中的方法。Python采用了一种约定的机制,在基类中以特殊名称的方法、属性(类似 __ init __ 这样的属性和方法)来提供指定的功能;
  • 在Python中有些方法名、属性名前后加上了双下划线,这种方法、属性通常属于Python类的特殊方法和属性,有的书中成为“魔法方法”;

1.2. 调用方式

  • 隐式调用
    -- 魔法方法是 隐式调用 的,在使用的时候不需要调用方法
  • 显示调用
    --

2. 简单实例

  • __ init __(self, [...])
    -- 类的初始化方法。它获取任何传给构造器的参数(比如我们调用 x = SomeClass(10, ‘foo’) , init 就会接到参数 10 和 ‘foo’ ,init 在Python的类定义中用的最多;
  • __ getitem __(self, key)
    -- 定义对容器中某一项使用 self[key] 的方式进行读取操作时的行为。这也是可变和不可变容器类型都需要实现的一个方法;
  • 示例:
class Compalny(object):
    # 类的初始化方法,获取参数 employee_list 这个列表
    def __init__(self, employee_list):
        self.employee = employee_list

    # 对 self.employee 这个 list 使用 self[key] 的方式进行读取操作
    def __getitem__(self, item):
        return self.employee[item]

company = Compalny(["tom", "bob", "jane"])

# 遍历 company 中所有员工
for em in company:
    print(em)

print('=' * 50)

# 获取 company 中的第三个元素
print(company[2])

3. 常用魔法方法

  • 常用魔法方法
    -- __ init __:类实例化会触发;
  • __ repr __
    -- 和 __ init __(self) 的性质一样,Python 中每个类都包含 __ repr __() 方法,因为 object 类包含 __ reper __() 方法,而 Python 中所有的类都直接或间接继承自 object 类;
    -- 示例:
>>> class User():
...     def __init__(self, name):
...         self.name = name
...     def __repr__(self):
...         return "user with name : "+ self.name
...
>>> user = User(name="zhangsan")
>>> print(user)
user with name : zhangsan      # 自动打印出 __repr__ 方法 return 的文字 

-- __ str __:打印对象会触发;
-- __ call __:对象()触发,类也是对象 类(),类的实例化过程调用元类的call
-- __ new __:在类实例化会触发,它比init早(造出裸体的人,init穿衣服);
-- __ del __:del 对象,对象回收的时候触发;
-- __ setattr __ , __ getattr __:(.拦截方法),当对象.属性--》赋值会调用setattr,如果是取值会调用getattr;
-- __ getitem __ , __ setitem __:([]拦截);
-- __ enter __ 和 __ exit __ 上下文管理器;

相关文章

  • python:函数说明

    Python: 函数参数魔法 2016-12-01 函数参数 在 Python 中,定义函数和调用函数都很简单,但...

  • 第二章 魔法函数

    一. 什么是魔法函数 二. python的数据模型以及数据模型对python的影响(数据模型也叫魔法函数) 三. ...

  • 2-3 魔法函数一览

    还是那句:python的魔法函数都已经提供好了的,我们不能够随便取定义我们的魔法函数。 到底python给我们提供...

  • Python进阶2

    魔法函数 引言 魔法函数是Python中定义的,以__开头,__结尾,形如__func__()的函数,一般使用已经...

  • python——魔法函数

    python中常见的内置类型 什么是魔法函数? python的魔法函数总被双下划线包围,它们可以给你的类增加特殊的...

  • Jupyter Notebook魔法函数

    魔法函数 使用魔法函数可以简单的实现一些单纯python要很麻烦才能实现的功能。 一些常用魔法函数的示例: 注意这...

  • python魔法函数

    什么是魔法函数? 1)在python中以双下滑线开头并且以双下滑线结尾的函数 2)魔法函数可以随意定义某个类...

  • Python:魔法函数

    1. 简介 1.1. 什么是魔法方法 Python是一门追求简单、高效的语言,它并不像某些语言如Java、C++等...

  • python魔法函数

    1.__init __ ;__new __ ; __del ____init __ 方法是Python最基本...

  • 4-12 with上下文协议

    with上下文的实行是通过Python内置的魔法函数实现的

网友评论

    本文标题:Python:魔法函数

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