美文网首页Python小哥哥每天学一点python
小蛇学python(20)魔法函数

小蛇学python(20)魔法函数

作者: 跌跌撞撞小红豆 | 来源:发表于2020-01-06 15:18 被阅读0次

什么是魔法函数?

  1. 以双下划线开头,并以双下划线结束的函数
  2. 其并不属于某个类,但是在类内实现后可以赋予类某些特性,让类变得更加灵活。

下面我们来见识一些常见的魔法函数

class Mentor:
    def __init__(self, mentor_name):
        self.mentor_name = mentor_name

init负责类内成员的初始化,当类初始化实例的时候,会将传入的值赋给类内成员,与c++中的构造函数十分相似。

class Mentor:
    def __init__(self, mentor_name):
        self.mentor_name = mentor_name
    def __getitem__(self, item):
        return self.mentor_name[item]

mentor = Mentor(['A','B','C'])
print(mentor[1])

getitem负责自动实现类成员函数的切片操作。

class Mentor:
    def __init__(self, mentor_name):
        self.mentor_name = mentor_name
    def __getitem__(self, item):
        return self.mentor_name[item]
    def __len__(self):
        return len(self.mentor_name)

mentor = Mentor(['A','B','C'])
print(len(mentor))

len函数让类拥有了长度属性

接下来介绍两个比较迷惑人的魔法函数。rperstr

class Mentor:
    def __init__(self, mentor_name):
        self.mentor_name = mentor_name
    def __getitem__(self, item):
        return self.mentor_name[item]
    def __len__(self):
        return len(self.mentor_name)
    def __repr__(self):
        return '进入函数1'


print(Mentor(['A','B','C']))

str_是面向用户的,而repr面向程序员,可以理解为:str是给用户使用的,而repr是提供给程序员用于调试程序用的。

strrepr这两个方法都是用于显示的。

当输出一个类的实例的时候,例如上面的例子中的studnet1,如果strrepr这两个方法都没有重写,会输出studnet1的地址;如果重写了,则会输出方法的返回值。

需要注意的是:如果两个方法都重写了,则优先且只调用str这一个方法;如果只重写一个方法,则会调用该方法

总结

魔法函数让编程更加优美,效率更加高。同时注意尽量不要自己定义魔法函数,这样会产生某些冲突。

相关文章

  • 小蛇学python(20)魔法函数

    什么是魔法函数? 以双下划线开头,并以双下划线结束的函数 其并不属于某个类,但是在类内实现后可以赋予类某些特性,让...

  • 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最基本...

网友评论

    本文标题:小蛇学python(20)魔法函数

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