python中object的方法——魔法方法

2023-10-27

正如java有个顶级类Object一样,Object类提供了hashCode equals toString等一系列方法。

那么python中的object也是一样,并且这些方法感觉上会更强大,更灵活。

本文仅做一个总结,方便日后查阅。


  • __slots__ 限制类的属性
  • __len__() 实现了它才能被len()方法调用
  • __str__() 和 __repr__() 前者是print()方法输出对象时调用,后者是在命令行直接对象回车调用
  • __iter__()和__next__() 配合将类变成Iterator
  • __getitem__()和__setitem__(),__delitem__()将类变成 list
  • __getattr__() 当getattr()方法没有找到属性时调用 可以对类中的所有属性和方法进行动态管理
  • __call__() 当直接在对象上(),也就是调用对象时,调用

以上的例子

  • __new__() 创建实例self
  • __init__() 初始化,用self去绑定属性
  • __enter__() with语句中会用,执行with内层的代码前调用,注意顺序with语句会__init__实例化
  • __exit__() with语句中会用,执行with内层的代码后调用
  • __import__() 动态加载类 相当于import module 如果有package加上fromlist关键字指定导入的py文件

更多定制类,详见python官方文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中object的方法——魔法方法 的相关文章

  • Python Pocketsphinx:使用 Decoder 类时无法识别关键字

    我正在尝试使用 Pocketsphinx 从 wav 文件中检测关键字 特别是使用解码器类 当我给它的时候this https www filedropper com clientaudio wav 文件并打印它检测到的内容甚至不接近 这是
  • 如何在Python中测量时间?

    我想启动我的程序 测量程序启动的时间 然后等待几秒钟 按下按钮 K RIGHT 并测量按下按钮的时间 我正在使用 Pygame 来注册 Keydown 但在我下面的代码中它没有注册我的 Keydown 我在这里做错了什么 start tim
  • Pandas 用单位插值数据

    大家好 几年来我一直在寻找 Stackoverflow 它对我帮助很大 以至于我以前不需要注册 但今天我遇到了一个使用 Python 与 Pandas 和 Quantities 也可能是 unum 或 pint 的问题 我尽力发表清晰的帖子
  • Python 使用 ssl.getpeercert() 从 URL 获取通用名称

    我正在尝试获取证书颁发者信息 通用名称 但链接中的代码不适用于某些 URL 如何在 python 中获取证书颁发者信息 https stackoverflow com questions 30862099 how can i get cer
  • 在Python中将SQL转换为json[重复]

    这个问题在这里已经有答案了 我需要传递一个可以使用它进行转换的对象 parseJSON 查询如下所示 cursor execute SELECT earnings date FROM table 为了传递可以转换为 json 的 HttpR
  • 动态添加字段到数据类对象

    我正在编写一个库来访问 REST API 它返回带有用户对象的 json 我将其转换为 dict 然后将其转换为数据类对象 问题是并非所有字段都是固定的 我想动态添加其他字段 未在我的数据类中指定 我可以简单地为我的对象分配值 但它们不会出
  • 如果我不重置 Python 的 ContextVars 会发生什么?

    这是Python中的内存泄漏吗 import contextvars contextvar contextvars ContextVar example while True string hello world token context
  • ValueError:展开时包装器循环

    我的示例代码中的 Python3 测试用例 文档测试 失败 但在 Python2 中同样可以正常工作 test py class Test object def init self a 0 self a a def getattr self
  • 找不到文件 setuptools-27.2.0-py3.5.egg

    这个问题适用于Python 3 5 2 在Windows 10 64位 上使用Anaconda 4 3 0 当我尝试使用 pip 安装软件包时 出现以下错误 Command python setup py egg info failed w
  • Pandas datetools模块错误

    我正在尝试从 pandas datetools 调用模块 但收到错误消息 指出 mofule 对象没有我所调用的名称的属性 想知道是否有人可以阐明这个问题 下面是我尝试使用的代码 import blpapi import pandas as
  • 使用 xlwings 排序(pywin32)

    我需要使用 python 按给定行对 Excel 电子表格进行排序 为了进行测试 我使用以下数据 在名为 xlwings sorting xlsx 的文件中 Numbers Letters Letters 2 7 A L 6 B K 5 C
  • pytest动态生成测试方法

    您好 我如何为列表或文件数量动态生成测试方法 假设我有 file1 file2 和 filen 其输入值为 json 现在我需要对多个值运行相同的测试 如下所示 class Test File unittest TestCase def t
  • 如何在 python 中从相机(或网络摄像头)捕获视频(和音频)

    我正在寻找一个解决方案 无论是在Linux还是在Windows中 它都可以让我 同时从我的网络摄像头和麦克风录制视频 音频 将其另存为文件 AVI 或 mpg 或其他文件 录制时在屏幕上显示视频 就我而言 压缩不是问题 实际上我更喜欢捕获
  • 基本的 Python OpenCV 裁剪和调整大小

    有人可以帮我一些裁剪算法吗 它的 openCV 我想弄清楚这一点 我知道方法是crop image y y1 x x1 如果我有一个带有 new dimensionXxnew dimensionY 像素的图像 并且我想将其裁剪为相同的宽度
  • SQLAlchemy/pandas to_sql for SQLServer -- 在主数据库中创建表

    使用 MSSQL 版本 2012 我使用 SQLAlchemy 和 pandas 在 Python 2 7 上 将行插入 SQL Server 表中 使用特定服务器字符串尝试 pymssql 和 pyodbc 后 我正在尝试 odbc 名称
  • Numpy 附加到一个空数组

    第一种情况 gt gt gt import numpy as np gt gt gt x np array 0 gt gt gt x np append x 1 gt gt gt x array 0 1 x包含 2 个元素 这是为什么 第二
  • 使用 tf.keras.Models.Sequential 构建的架构是否比使用 Tensorflow 的功能 API 构建的架构运行得更慢、更准确?

    我只是比较了 2 个 我认为 等效的 VGG ish 架构 一个是使用构建的tf keras Models Sequential 另一个用了Tensorflow 的函数式 API 每个人都试图解决cats vs dogs 数据集 经过 10
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 使用 numpy 数组计算累积最小值

    我想计算 累积最小值 数组 基本上 数组到每个索引的最小值 例如 import numpy as np nums np array 5 3 4 2 1 1 2 0 cumulative min np zeros nums size dtyp
  • 如何在 PHP 中对数组和数据进行排序?

    这个问题旨在作为有关 PHP 中数组排序问题的参考 人们很容易认为您的特定案例是独特的并且值得提出新问题 但大多数实际上只是此页面上的解决方案之一的微小变化 如果您的问题因与此问题重复而被关闭 请仅在您能解释为什么它与以下所有问题显着不同的

随机推荐

  • 左值与右值

    目录 一 类型 二 地址 三 举例 一 类型 1 均与类型无关 int型 float型等等 均有 二 地址 1 右值不可取地址 引用的右值 程序没有分配内存区域 无地址 2 左值可以取地址 地址为所引用的实例 变量 对象的地址 int ma
  • Qt利用setStyleSheet设置样式

    Qt中设置按钮或QWidget的外观是 可以使用QT Style Sheets来进行设置 非常方便 可以用setStyleSheet font bold font size 20px color rgb 241 70 62 backgrou
  • [总结]怎么给VM(虚拟机)添加新磁盘

    1 关闭系统 点击VM gt Settings弹出的Add Hardware Wizard对话框 点击Add gt Hard Disk gt Next gt Create a new virtual disk gt SCSI Recomme
  • 软件设计 基础篇(二) 交互设计

    软件设计 基础篇 系列文章目录 软件设计 基础篇 二 交互设计 文章目录 软件设计 基础篇 系列文章目录 1 软件设计 1 1 设计简介 1 2 设计基础 2 交互设计 2 1 交互概述 2 2 交互起源 总结 1 软件设计 软件设计是从软
  • Shell函数调用

    文章目录 一 函数基本格式 二 函数调用 2 1函数中调用 2 2函数调用函数 2 3外部调用 2 4案例 三 总结 在shell脚本中 有些命令或者某些操作需要频繁的使用时 每次都重新写太过繁琐 这时我们就可以使用函数 当需要使用时 直接
  • 2022年开始学习Delphi并成为Delphi程序员的5个重要原因

    Delphi 是编程界的传奇语言之一 是软件开发历史的基石 随着新平台和框架的出现 新语言脱颖而出 但 Delphi 因其作为跨平台本机原生开发工具的可靠性和有效性而在IT界发展趋势来来去去的大潮中站稳了脚跟 更重要的是 随着时间的推移 D
  • 用python做一个随机点名程序(不重复点名)

    用python做一个简单的随机点名程序 不重复点名 这是我来到csdn的第一篇文章 内容如果有瑕疵的地方或者代码可以进一步改善 请大家对我指点一二 谢谢 废话不多说 上代码 import random 导入随机模块 import pytts
  • centos7 新磁盘挂载扩展到根目录

    摘要 局域网 ESXi 上搭建的 gitlab 代码仓库不能使用 查看了一下是 dev mapper centos root 路径存储满了 这里记录一下把新增磁盘挂载到根目录下的过程 在为 liunx 虚拟机扩充磁盘的时候 只能是在关机状态
  • 【对比Java学Kotlin】扩展

    扩展概述 以 JDK 内置的集合 ArrayList 为例 如果我们想给其添加一个能力 交互两个元素 swap index1 index2 我们应该怎么做 常见的有如下方式 工具类 静态方法 以 ArrayList 和要交换的两个 inde
  • node的child_process的execSync方法调用cmd报错

    const execSync require child process execSync node modules bin babel plugins router generator src out dir plugins router
  • 医院数据防泄露保护系统解决方案

    医院数据防泄露保护系统解决方案 目 录 1 医院需求分析 2 解决方案综述 2 1 产品部署示意图 3 产品优势功能 3 1 数据库审计与风险控制系统 3 1 1 事前安全风险评估 3 1 2 实时统方行为监控 3 1 3 双向审计让统方更
  • 95-36-030-ChannelHandler-ChannelInboundHandler

    文章目录 1 概述 2 继承体系 3 ChannelInboundHandler 4 ChannelInboundHandlerAdapter 1 概述 ChannelInboundHandler处理入站事件 以及用户自定义事件 2 继承体
  • SpringCloud Gateway API接口加解密

    接口范围 所有GET请求 白名单除外 body 体 是 application json 和 application json utf8 的 POST请求 白名单除外 POST url传参也支持 白名单除外 启用禁用 版本 后端提供独立接口
  • java程序内存占用过高的问题定位分析方法

    线上应用的故障排查能力是一个高级软件开发人员的必修课 也最能体现一个技术人员的工作经验和能力 从事Java开发 经常会碰到下面两种异常 1 java lang OutOfMemoryError PermGen space 2 java la
  • python下使用unrar出现错误的问题

    首先说一下我的系统和Python版本信息 win7 python2 7 12 我找了两篇个人认为比较好的文章 第一篇http blog csdn NET luoye7422 article details 41873499 按照他的方法来确
  • OpenFeign基础应用以及Sentinel整合OpenFeign使用

    OpenFeign基础应用 概念 OpenFeign是一种声明式 模板化的HTTP客户端 在Spring Cloud中使用OpenFeign 可以做到使用HTTP请求访问远程服务 就像调用本地方法一样的 开发者完全感知不到这是在调用远程方法
  • Spring 学习笔记03 - AOP

    目录 AOP 概述 AOP 是什么 AOP 相关术语 基于 XML 配置 AOP 简单实现 AOP 的配置步骤 基于注解配置 AOP 需要用到的新注解 简单实现 使用注解配置 AOP 的 bug AOP 概述 AOP 是什么 AOP Asp
  • 面阿里P6需要掌握的部分技术

    Java集合 HashMap和ConcurrentHashMap 平时最好有读一些源码 最好知道每个参数为什么设置成这么大 有什么好处 JUC包肯定要学 即使平时的编程根本不用 也必须得会 至少要知道aba cas aqs unsafe v
  • 分布式锁之Zookeeper实现

    ZooKeeper 有四种节点类型 持久节点 持久顺序节点 临时节点 临时顺序节 利用 ZooKeeper 支持临时顺序节点的特性 可以实现分布式锁 当客户端对某个方法加锁时 在 ZooKeeper 中该方法对应的指定节点目录下 生成一个唯
  • python中object的方法——魔法方法

    正如java有个顶级类Object一样 Object类提供了hashCode equals toString等一系列方法 那么python中的object也是一样 并且这些方法感觉上会更强大 更灵活 本文仅做一个总结 方便日后查阅 slot