美文网首页
2-1 什么是魔法函数

2-1 什么是魔法函数

作者: xgnb | 来源:发表于2019-03-10 21:42 被阅读0次

    魔法函数用于增强我们定义的类对象。
    在类对象中,以双下滑线开头以及结尾的成为魔法函数,比如常见的__init__。
    我们看一下场景。

    quetion:
    定义一个名为Company的公式类,构造函数定义一个员工列表,遍历这个员工列表,打印出员工的名字

    class Company:
        def __init__(self, employee_list):
            self.employee = employee_list
    # 如果我想遍历公司的员工,通常这样做
    company = Company(['tom', 'bob', 'jane'])
    employee = company.employee
    for em in employee:
        print(em)
    

    当我们为这个对象定义一个,名为__getitem__方法的时候,如下定义时:

    class Company:
        def __init__(self, employee_list):
            self.employee = employee_list
    
        def __getitem__(self, item):
            return self.employee[item]
    
    company = Company(['tom', 'bob', 'jane'])
    
    for i in company:
        print(i)
    

    一样可以达到如上的操作!~
    补充:
    当我们定义了这个__getitem__的魔法方法时(这个Company类就有了可迭代的功能,是一个可迭代类型),这边用for循环在这里面取得的i为__getitem__所定义返回的结果(第一次取得tom,第二次取得bob),__getitem__中的item参数实则为做循环时的index在python内部会不停根据这个定义的方法根据索引返回出这个employee的索引结果。

    总结:

    可以看到了魔法函数的强大,魔法函数可以增强以及丰富我们类的功能,

    注意
    魔法函数在python内部已经规定好,我们无法自己定义一个,只能根据不同的魔法函数的设计规则,去重写规定我们类对象的功能。

    相关文章

      网友评论

          本文标题:2-1 什么是魔法函数

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