当前位置: 首页 > article >正文

python常见的魔术方法

什么是魔术方法

Python类的内置方法,各自有各自的特殊功能,被称之为魔术方法

常见的魔术方法有以下:

__init__:构造方法
__str__:字符串方法
__lt__:小于、大于符号比较
__le__:小于等于、大于等于符合比较
__eq__:等于符合比较

__init__

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

负责创建对象时初始化对象,给成员变量赋值初始值

调用:

if __name__ == '__main__':
    stu = Student('yohoo', 27)
    print(stu.name)
    print(stu.age)

结果:

在这里插入图片描述

__str__

如果没有__str__方法,打印类的对象是内存地址

if __name__ == '__main__':
    stu = Student('yohoo', 27)
    print(stu)
    print(str(stu))

结果:

在这里插入图片描述

当添加__str__方法

整体代码:

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

    def __str__(self):
        return "我是%s,我的年龄是%d" % (self.name, self.age)


if __name__ == '__main__':
    stu = Student('yohoo', 27)
    print(stu)
    print(str(stu))

结果:

在这里插入图片描述

__lt__

如果没有__lt__不能直接对两个对象进行小于大于的比较

在这里插入图片描述

如果添加此魔术方法,other参数表示的另一个对象

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

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

if __name__ == '__main__':
    stu1 = Student('yohoo', 27)
    stu2 = Student('zz', 29)
    print(stu1 < stu2)
    print(stu1 > stu2)

结果:

在这里插入图片描述

____le__

与上面__lt__类似,le是针对小于等于或者大于等于

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

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

if __name__ == '__main__':
    stu1 = Student('yohoo', 27)
    stu2 = Student('zz', 29)
    print(stu1 <= stu2)
    print(stu1 >= stu2)

结果:

在这里插入图片描述

__eq__

和上面类似,eq是针对等于

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

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

if __name__ == '__main__':
    stu1 = Student('yohoo', 29)
    stu2 = Student('zz', 29)
    print(stu1 == stu2)

结果:

在这里插入图片描述


http://www.kler.cn/news/319146.html

相关文章:

  • 对FPGA加载过程中不同寄存器初始化方式现象的分析
  • 基于PHP的CRM管理系统源码/客户关系管理CRM系统源码/php源码/附安装教程
  • 免费分享必看!AI合规常见问题解答(二)
  • java之斗地主部分功能的实现
  • 修改Linux服务器系统语言
  • 深入解析Debian与Ubuntu:技术特点与用户使用指南
  • Git 详细安装教程(详解 Git 安装过程的每一个步骤)
  • Python 课程19-FastAPI
  • 开源 AI 智能名片与 S2B2C 商城小程序:嫁接权威实现信任与增长
  • 深入解析:HTTP 和 HTTPS 的区别
  • 51单片机开关电路+限位+舵机
  • 【玉米田】
  • Springboot多种请求参数
  • Cloudera 安装不再难:下载安装全流程指南
  • 数据库基础01
  • 《使用 LangChain 进行大模型应用开发》学习笔记(四)
  • 【图论】最短路应用
  • 封面设计用什么软件最高效?分享5款新手必备工具
  • 数据报文解析
  • 【CSS】变量的声明与使用
  • 水电站/水库大坝安全监测系统完整解决方案
  • 抖音上下边框中间视频效果怎么做
  • 效率提升的秘密武器在快速编程领域的应用与探索
  • GPU架构原理与CUDA编程原理
  • 数据结构 ——— 常见的时间复杂度计算例题(中篇)
  • uniapp 中集成 axios 封装request,实现若依权限认证和若依 api方法共用
  • mysql学习教程,从入门到精通,SQL 联表查询(Join)(21)
  • Apache ZooKeeper 及 Curator 使用总结
  • 谷歌云推出全新区块链RPC服务:简化Web3开发
  • 设置VsCode搜索时排除文件,文件列表中隐藏文件