• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    浅谈Python魔法方法

    特殊方法一览

    在 Python 的学习和使用过程中, 你一定碰到过一些 特殊方法, 它们开头和结尾都有两条下划线, 也叫魔法方法 (Magic method), 或者 Dunder method (double under method).

    例如:

    >>> dir(int)
    ['__abs__', '__add__', '__and__', 
    '__bool__', '__ceil__', '__len__', 
    '__delattr__', '__dir__', '__divmod__', 
    '__doc__', '__eq__', '__float__', ...]
    

    * Python 的内置数据类型实现了非常多的魔法方法, 可以通过 dir() 进行查看.

    初识魔法方法

    当我们想从一个数组 nums = [1, 2, 3] 中获取第一个元素, 我们知道只需要执行 nums[0] 即可, 为了求得 nums[0] 的值, Python 的编译器实际上会隐式调用 nums.__getitem__(0)

    >>> nums = [1, 2, 3]
    >>> nums[0]
    1
    >>> nums.__getitem__(0)
    1

    再例如获取数组的长度, 我们使用 len(nums) 来获取, Python 编译器也是调用了特殊方法 nums.__len__()

    >>> len(nums)
    3
    >>> nums.__len__()
    3

    魔法方法有什么作用

    运算符重载

    在 Python 中 + 可以对两个 int 类型的数据进行加操作, 也可以对字符串进行拼接, 这都是魔法方法在背后保证了整体语言风格的一致性.

    魔法方法被大量用在运算符重载方面, 比如 +, -, * , /的操作. 我们自己可以定义想要的数据结构或者数据类型, 这些自定义的class可以跟 Python 内置的数据类型一样, 从而可以写出更具表达力的代码, 换句话说就是更具有 Pythonic 风格的代码.

    动手实践

    下面我们自定义一个叫工具人的类, 让这个类支持加法, 乘法, 大于等于等操作

    class ToolMan(object):
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def __len__(self):
            return len(self.name)
    
        def __str__(self):
            return "你好, 打工人!"
    
        def __add__(self, other):
            # 将两个ToolMan的年龄加起来
            return self.age + other.age
    
        def __mul__(self, other):
            # 将两个 ToolMan 的年龄相乘
            return self.age * other.age
    
        def __ge__(self, other):
            # 对比连个 ToolMan 的年龄
            return self.age >= other.age
    

    我们自定义了这样一个类, 你可以发现类中重写了很多魔法方法, 这些魔法方法可以让你自定义的类也实现类似 interger 的加减乘除, 比较大小等操作!

    >>> tool_man1 = ToolMan("打工人1", 20)
    >>> tool_man2 = ToolMan("打工人2", 25)
    >>> print(tool_man1)
    你好, 打工人!
    >>> tool_man1 + tool_man2
    45
    >>> tool_man1 * tool_man2
    500
    >>> tool_man1 >= tool_man2
    False
    

    是不是还挺有意思的, 自己动手玩一玩吧~

    到此这篇关于浅谈Python魔法方法的文章就介绍到这了,更多相关Python魔法方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python面向对象魔法方法和单例模块代码实例
    • Python魔法方法 容器部方法详解
    • Python魔法方法功能与用法简介
    • python魔法方法-属性转换和类的表示详解
    • Python中的魔法方法深入理解
    上一篇:浅谈哪个Python库才最适合做数据可视化
    下一篇:PyMongo 查询数据的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    浅谈Python魔法方法 浅谈,Python,魔法,方法,浅谈,