Python魔法函数

Python的魔法函数

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list


company = Company(["tom", "bob", "jane"])
employee = company.employee
for em in employee:
    print(em)

上述代码等于下面:

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list

    def __getitem__(self, item):
        return self.employee[item]


company = Company(["tom", "bob", "jane"])
for em in company:
    print(em)
  • python中以双下划线开始和结束的函数(不可自己定义)为魔法函数
  • 调用类实例化的对象的方法时自动调用魔法函数
  • 不加__getitem__ ,Company是不可迭代类型
  • 加了__getitem__ ,Company变为可迭代类型

两个小例子:

例1

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list

    def __getitem__(self, item):
        return self.employee[item]


company = Company(["tom", "bob", "jane"])
print(len(company))

上面报错

正确应该是:

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list


    def __len__(self):
        return len(self.employee)


company = Company(["tom", "bob", "jane"])
print(len(company))

例2:

class MyVector(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other_instance):
        re_vector = MyVector(self.x+other_instance.x, self.y+other_instance.y)
        return re_vector

    def __str__(self):
        return"x:{x}, y:{y}".format(x=self.x, y=self.y)


first_vec = MyVector(1,2)
second_vec = MyVector(2,3)
print(first_vec+second_vec)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值