首页 > 编程语言 >Python~Python面向对象之魔术方法

Python~Python面向对象之魔术方法

时间:2025-01-20 20:30:43浏览次数:3  
标签:__ name 魔术 Python self 面向对象 Jack Student age

一、魔术方法之构造方法

1.介绍

  • __init__()方法,称为构造方法
  • 在创建类对象(构造类)的时候,会自动执行
  • 在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用

2.示例

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

    def description(self):
        return f"My name is {self.name} and age is {self.age}"


Jack = Person("Jack", 20)
print(Jack.description())

二、魔术方法之字符串方法

1.介绍

  • __str()__称为字符串方法
  • 当类对象被转换为字符串时,返回的内容

2.示例

# 没使用__str__方法
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

Jack = Student("Jack", 20)
print(Jack)         # <__main__.Student object at 0x0000018792DE70E0>
print(str(Jack))    # <__main__.Student object at 0x0000018792DE70E0>
# 使用了__str__方法
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name

Jack = Student("Jack", 20)
print(Jack)         # <__main__.Student object at 0x0000018792DE70E0>
print(str(Jack))    # <__main__.Student object at 0x0000018792DE70E0>

三、魔术方法之小/大于符号比较方法

1.介绍

  • __lt__:小于符号比较方法
  • __gt__:大于符号比较方法
  • __le__:小于等于符号比较方法
  • __ge__:大于等于符号比较方法
  • 实现__lt__方法后,可以实现小于符号和大于符号两种比较

2.示例

# 未实现比较方法
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age


Jack = Student("Jack", 20)
Peter = Student("Peter", 30)
print(Jack<Peter)               # TypeError: '<' not supported between instances of 'Student' and 'Student'
# 实现比较方法
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age


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

Jack = Student("Jack", 20)
Peter = Student("Peter", 30)
print(Jack<Peter)               # True

四、魔术方法之比较运算符实现方法

1.介绍

  • __eq__:比较运算符实现方法
  • 不实现__eq__方法,对象之间可以比较,但是是比较内存地址,即不同对象==比较一定是False结果
  • 实现了__eq__方法,就可以按照自己的想法来决定2个对象是否相等了

2.示例

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

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

Jack = Student("Jack", 20)
Peter = Student("Peter", 30)
print(Jack==Peter)               # False

标签:__,name,魔术,Python,self,面向对象,Jack,Student,age
From: https://blog.csdn.net/feizuiku0116/article/details/145264206

相关文章

  • #Python 用Sqlite3做模拟银行系统
    直接上干货:#引用各大库以及模块:fromsre_constantsimport_NamedIntConstantimporttkinterastkfromtkinterimportmessagebox,Toplevelimportsqlite3importdatetime#系统基本操作1-创建记忆储存:defcreate_account():  conn=sqlite3.connect('bank_......
  • 利用Python的matplotlib 库实现散点图
    importmatplotlib.pyplotasplt#定义数据x=[1,2,3,4,5,6,7,8,9,10]y=[2,4,5,7,6,8,9,11,12,10]#绘制散点图plt.scatter(x,y)#添加标题和标签plt.title('SimpleScatterPlot')plt.xlabel('X-axis')plt.ylabel('Y-axis'......
  • 【第一天】零基础入门刷题Python-算法篇-数据结构与算法的介绍(持续更新)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Python数据结构与算法的详细介绍1.基本概念2.Python中的数据结构1.列表(List)2.元组(Tuple)3.字典(Dictionary)4.集合(Set)5.字符串(String)3.Python中的常用算法1.排序算法2.搜索算法3.递......
  • 使用 Python 和 Tesseract 进行验证码自动识别
    验证码(CAPTCHA)广泛用于防止自动化程序(例如爬虫)滥用网站。它通过呈现扭曲的字符、图形或其他复杂模式,要求用户确认自己是人类而非机器人。虽然它的目的是为了避免自动化工具进行操作,但我们可以使用Python和TesseractOCR技术来自动化识别这些验证码。在这篇文章中,我们将讲解如......
  • 使用 Python 和 Tesseract 进行验证码识别
    验证码(CAPTCHA)是防止自动化程序(如爬虫、机器人的自动化脚本)的一种安全技术,通常通过图像显示扭曲的字母、数字或者符号,要求用户正确输入。这种技术在网络安全中起着重要作用,但我们也可以通过编程方式来自动化识别这些验证码。本文将通过Python和TesseractOCR(光学字符识别)技术来......
  • python的函数学习
    函数定义方式Python:defmy_function(param1,param2,keyword_param=None):returnparam1+param2+(keyword_paramifkeyword_paramisnotNoneelse0)Python使用def关键字来定义函数。参数类型不需要显式声明,Python是动态类型语言。C/C++:intmy_function(intp......
  • 使用Anthropic API的Python和TypeScript SDK快速入门
    在当今AI驱动的应用程序中,如何高效地调用强大的AI模型是开发人员面临的重要任务之一。Anthropic提供的Python和TypeScriptSDK,使得集成其AIAPI变得无比简单。无论你是通过AmazonBedrock还是GoogleCloudVertexAI进行开发,AnthropicSDK都为你提供了流畅的使用体验。技术......
  • 剑指offer面试题3:数组中重复的数字(Python实现)
    """面试题3:数组中重复的数字在一个长度为n的数组里所有数字都在0~n-1的范围内,某些数字是重复的,找出任意一个重复的数字"""defduplicate1(numbers:list,length:int)->int:"""修改原数组"""ifnumbers==[]orlength<=0:......
  • (2024最新毕设合集)基于SpringBoot的游乐园管理系统-69394|可做计算机毕业设计JAVA、PHP
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1经济可行性2.1.2技术可行性2.1.3操作可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5......
  • Python Playwright学习笔记(二)
    一、模拟手机playwright.devices可以配置模拟器。importasynciofromplaywright.async_apiimportasync_playwrightasyncdefrun(playwright):iphone_12=playwright.devices['iPhone12']browser=awaitplaywright.webkit.launch(headless=False)conte......