【《流畅的python》的1.2节的学习笔记】

前言

本文为《流畅的python》的1.2节的学习笔记。

如何使用特殊方法

代码展示


from math import hypot

class Vector:
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y
    def __repr__(self):
        return 'Vector(%r, %r)' % (self.x, self.y)
    def __abs__(self):
        return hypot(self.x, self.y)
    def __bool__(self):
        return bool(abs(self))
    def __add__(self, other):
        x = self.x + other.x
        y = self.y + other.y
        return Vector(x, y)
    def __mul__(self, scalar):
        return Vector(self.x * scalar, self.y * scalar)

v1 = Vector(2, 4)
v2 = Vector(2, 1)

print(v1 + v2)

说明:
定义一个vector类,实现了结果打印,取绝对值,加法,乘法。
repr__函数:把一个对象用字符串的形式表达出来以便辨认,在__repr 的实现中,用到了%r 来获取对象各个属性的标准字符串表示形式。

函数运行过程:

class类初始化

py代码开始运行后,首先执行class类的初始化,
按照代码的顺序,第一个执行__init__()函数: Alt可以看到,运行到此时,已依次增加了其他几个类函数: Alt

变量的初始化

在变量v1和v2运行时,v1和v2分别运行__init__()函数获得初值,v1 = Vector(2, 4),v2 = Vector(2, 1)

"+"和__repr__函数运行

在执行代码print(v1 + v2)时,首先运行变量v1和v2的__add__()加法函数,可以看到此时v1对应self变量,v2对应other变量: Alt加法函数运行后,运行__repr__()函数对应print函数进行输出: Alt

总结

特殊函数如何实现及特殊函数的运行过程。上面已详细说明,不再赘述。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值