[Python笔记02] 魔法方法

1.魔法方法的使用

魔法方法是Python用来增强类的特性的方法,格式为"__ 方法名 __",下面来看看怎么使用。

这是一段没使用魔法方法代码:

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

company = Company(["tom", "bob", "jane"])	#将值传入类中

employee = company.employee	#获取employee
for em in employee:	#遍历打印
    print(em)

输出结果

tom
bob
jane

使用魔法方法后:

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:	#这里会调用__getitem__方法
    print(em)

输出结果

tom
bob
jane

可以看到输出结果相同

使用魔法方法后,可以直接对列表进行切片操作。

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"])

company1 = company[:2]

for em in company1:
    print(em)

输出结果

tom
bob

__ len __ 方法会调用 __ getitem __ 方法

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list
    
#    def __getitem__(self, item):
#        return self.employee[item]
    
    def __len__(self):  #返回调用__getitem__
        return len(self.employee)

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

print(len(company))

输出结果

3

2.使用实例

(1)__ str __

class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list
    
    def __str__(self):  #处理返回的字符串
        return ",".join(self.employee)
        
    def __repr__(self): #在开发模式下调用
        return ",".join(self.employee)

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

输出结果

tom,bob,jane

(2)__ abs __

class Nums(object):
    def __init__(self, num):
        self.num = num

    def __abs__(self):
        return abs(self.num)

my_num = Nums(-1)
print(abs(my_num))

输出结果

1

(3)__ add __

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(3, 5)
print(first_vec + second_vec)

输出结果

x:4, y:7

3.Python中的魔法方法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值