object类是Python所有类的顶层父类,内置包含9个核心可调用方法,分别为__init__、__new__、__str__、__repr__、__eq__、__hash__、__bool__、__dir__、__sizeof__,这些方法默认全局继承无需手动导入,可直接重写适配自定义类,仅部分方法存在专属使用场景与调用限制,普通业务开发常用前六种方法。
object类基础构造与实例方法
__new__是Python实例创建的首个触发方法,优先级高于初始化方法,核心作用是开辟内存空间、创建并返回实例对象。该方法为静态方法,默认接收类名参数,你在自定义类中重写该方法时,必须手动返回父类的实例,否则后续__init__初始化逻辑无法执行。该方法大多用于单例模式、自定义实例创建规则的场景,常规业务开发无需重写。
__init__是最常用的实例初始化方法,实例创建完成后自动触发,核心功能是给实例绑定自定义属性。你定义类时编写的初始化函数,本质就是重写object的__init__方法,该方法无返回值,仅负责属性赋值。零基础开发中90%的自定义类都会重写此方法,是适配业务属性定义的核心方法。
__del__为实例销毁回收方法,在实例被垃圾回收机制清除时自动执行,可用于关闭文件、释放网络连接等资源收尾操作。Python垃圾回收机制不会固定触发该方法,程序终止时未主动销毁的实例,可能不会执行该方法,不建议依赖它做核心数据保存操作。
object类字符串与展示方法
__str__方法用于定义实例的字符串展示形式,当你直接打印实例、使用str()转换实例时自动触发。该方法必须返回字符串类型数据,默认返回实例所属类名与内存地址,重写后可自定义通俗易懂的实例展示内容,专门用于面向普通用户的内容展示。
__repr__方法是实例的官方字符串描述方法,交互式命令行直接输出实例、使用repr()函数时触发。其默认返回格式和原生__str__一致,优先级低于__str__,当类未重写__str__时,打印实例会调用__repr__,该方法主要面向开发人员用于调试排查问题。
object类运算与校验方法
__eq__方法用于实现实例之间的相等判断,对应==运算符,默认根据实例内存地址判断是否相等。你可以重写该方法,自定义两个实例的相等判定规则,比如根据对象属性值判断相等,而非依赖内存地址。该方法仅判定相等,无法处理大于、小于等对比逻辑。
__hash__方法用于生成实例的哈希值,返回整数类型数据,适配集合、字典键的去重与存储规则。Python官方文档明确规定,重写__eq__方法后,必须同步重写__hash__方法,否则实例默认变为不可哈希对象,无法存入集合、作为字典键使用。未重写时,哈希值默认关联实例内存地址。
object类查询与计量方法
__dir__方法会返回实例所有可调用的属性、方法名称列表,对应dir()内置函数的执行逻辑,可快速查询对象的全部内置与自定义属性,常用于代码调试、排查属性调用异常问题。
__sizeof__方法用于计算实例占用的内存字节数,对应sys.getsizeof()函数,仅统计对象本身占用的基础内存,不包含对象引用的其他数据内存,可简单校验实例内存占用规模。
该系列方法的适用边界为:仅适配Python3版本,Python2中object类为新式类基类,旧式类不继承这些内置方法,且所有内置方法均为双下划线魔法方法,不建议直接主动调用,仅通过重写或运算符、内置函数间接触发。
想要了解更多关于object类有哪些方法的文章欢迎访问:百科