有关运算的魔法方法 | 手把手教你入门Python之五十四

简介: 本节介绍了与运算相关的一些魔法方法。

上一篇:Python魔法方法的简介 | 手把手教你入门Python之五十三
下一篇:函数案例讲解 | 手把手教你入门Python之五十五

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

运算相关的魔法⽅法

思考:

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age

# 1.调用__new__方法申请内存空间     
p1 = Person('zhangsan',18)

# 1.调用__new__方法申请内存空间  
p2 = Person('zhangsan',18)
print(p1 == p2)

上述代码中,使⽤ == 运算符⽐较两个对象,结果是True还是False? == 到底⽐较的是什么?

怎样比较两个对象是否是同一个对象?比较的内存地址。
image.png
p1和p2不是一个对象。

is 身份运算符
可以用来判断两个对象是否是同一个对象。

nums1 = [1, 2, 3]
nums2 = [1, 2, 3]
print(nums1 is nums2)  # False
print(nums1 == nums2)   # True

is比较两个对象的内存地址。
==比较两个对象的值,会调用对象的__eq__方法,获取这个方法的比较结果。

⽐较运算符相关魔法⽅法

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __eq__(self, other):
        return self.name == other.name and self.age == other.age

    # != 本质是调用__ne__方法,或者__eq__ 方法取反
    # def __ne__(self, other):

    def __lt__(self, other):
        return self.age < other.age

    # greater than 使用 > 会自动调用这个方法
    # def __gt__(self, other):

    def __le__(self, other):
        return self.age <= other.age

    # 使用 >= 会自动调用
    # def __ge__(self, other):


s1 = Student('zhangsan', 18)
s2 = Student('zhangsan', 18)
s3 = Student('lisi', 20)
print(s1 == s2)
print(s1 != s2)
print(s1 > s2)
print(s1 >= s2)
print(s1 <= s2)
print(s1 <= s2)

执行结果:
image.png

算数运算符相关魔法方法

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __add__(self, other):
        return self.age + other

    def __sub__(self, other):
        return self.age - other

    def __mul__(self, other):
        return self.age * other

    def __truediv__(self, other):
        return self.age / other
    def __mod__(self, other):
        return self.age % other
    def __pow__(self, power, modulo=None):
        return self.age ** power

        
s = Student('zhangsan', 18)
print(s + 1) # 19
print(s - 2) # 16
print(s * 2) # 36
print(s / 5) # 3.6
print(s % 5) # 3
print(s ** 2) # 324

类型转换相关魔法⽅法

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __int__(self):
        return self.age

    def __float__(self):
        return self.age * 1.0

    def __str__(self):
        return self.name

    def __bool__(self):
        return self.age > 18


s = Student('zhangsan', 18)
print(int(s))
print(float(s))
print(str(s))
print(bool(s))

if s:
    print('hello')

执行结果:
image.png

配套视频

相关文章
|
2天前
|
Python
python中使用update()方法
【6月更文挑战第16天】
15 7
|
1天前
|
Web App开发 数据采集 JavaScript
python执行js代码几个方法
python执行js代码几个方法
|
23小时前
|
JavaScript 前端开发 Java
python的入门基础知识和一些小技巧
python的入门基础知识和一些小技巧
|
23小时前
|
JavaScript PHP 网络架构
Python学习技巧及方法总结
Python学习技巧及方法总结
|
3天前
|
Python
Python优雅遍历字典删除元素的方法
本文详细介绍了Python优雅遍历字典删除元素的五种方法,字典推导式是删除字典中元素的最常见且最优雅的方法,因为它清晰、简洁且易于理解。其他方法可能在某些特定情况下有用,但通常不如字典推导式通用或高效。
11 0
|
3天前
|
机器学习/深度学习 算法 索引
Python梯度提升决策树的方法示例
本文简要介绍了Python梯度提升决策树的方法示例,包括鸢尾花(Iris)数据集进行分类、房价预测(回归)、垃圾邮件分类、特征选择等示例。
8 0
|
4天前
|
算法 Python
Python 基础入门
Python 基础入门
|
5天前
|
Python
python正则表达式入门
python正则表达式入门
|
12月前
|
Python
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法
|
Python
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()
面向对象和面向过程,是两种编程思想. 编程思想是指对待同一个问题,解决问题的套路方式.面向过程: 注重的过程,实现的细节.亲力亲为.面向对象: 关注的是结果, 偷懒.类和对象,是面向对象中非常重要的两个概念object 是所有的类基类,即最初始的类class 类名(object): 类中的代码PEP8代码规范:类定义的前后,需要两个空行 创建的对象地址值都不一样如dog和dog1的地址就不一样,dog的地址为2378043254528dog1的地址为2378044849840 8.类内部操作属性 sel
194 1
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()