2-1 什么是魔法函数

2019-03-10  本文已影响0人  xgnb

魔法函数用于增强我们定义的类对象。
在类对象中,以双下滑线开头以及结尾的成为魔法函数,比如常见的__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内部已经规定好,我们无法自己定义一个,只能根据不同的魔法函数的设计规则,去重写规定我们类对象的功能。

上一篇 下一篇

猜你喜欢

热点阅读