首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

特殊方法(__init__、__new__、__len__、…)的Python文档在哪里?

特殊方法(也称为魔法方法或双下划线方法)在Python中用于实现类的特定行为。这些方法以双下划线开头和结尾,例如__init____new____len__等。它们允许你在类实例化时执行自定义操作,或在调用特定操作时重载内置行为。

关于这些特殊方法的详细文档,你可以参考Python官方文档。以下是一些关键链接:

  • Python官方文档主页:https://docs.python.org/3/
  • Python数据模型:https://docs.python.org/3/reference/datamodel.html#special-method-names
  • __init__ 方法:https://docs.python.org/3/reference/datamodel.html#object.init
  • __new__ 方法:https://docs.python.org/3/reference/datamodel.html#object.new
  • __len__ 方法:https://docs.python.org/3/reference/datamodel.html#object.len

这些文档提供了关于每个特殊方法的详细解释、参数说明、返回值以及使用示例。

优势与应用场景

  • __init__:用于初始化新创建的对象。它在对象实例化时自动调用,允许你设置对象的初始状态。
  • __new__:用于创建并返回一个新的对象实例。它通常用于控制对象的创建过程,例如实现单例模式或自定义对象创建逻辑。
  • __len__:用于返回对象的长度。当你对一个对象使用内置的 len() 函数时,就会调用这个方法。这在实现自定义集合或序列类型时非常有用。

示例代码

以下是一些简单的示例代码,展示了如何使用这些特殊方法:

代码语言:txt
复制
class MyClass:
    def __init__(self, value):
        self.value = value

    def __new__(cls, *args, **kwargs):
        print("Creating a new instance")
        return super(MyClass, cls).__new__(cls)

    def __len__(self):
        return len(self.value)

# 使用示例
obj = MyClass([1, 2, 3])
print(len(obj))  # 输出:3

在这个示例中,MyClass 类定义了 __init____new____len__ 方法。__init__ 方法用于初始化对象的 value 属性,__new__ 方法在创建新实例时打印一条消息,__len__ 方法返回 value 列表的长度。

希望这些信息对你有所帮助!如果你有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python自学成才之路 元类中__new__和__init__方法

元类中也是一样,只是元类__new__创建是类实例,__init__是对类实例做修改。...元类__init__第一个参数是cls(普通类是self)表示是类实例本身,有了类实例本身,当然能对类做一些修改。那么__new__和__init__方法中都可以对类实例做什么样修改?...在这个案例中分别在__new__和__init__方法对三要素做了修改,__new__方法中改了__slots__属性,加了基类tag2,改了类名,加了属性,删除了bar方法。...__init__中做了类似的操作。从最后输出结果可以看出__new__修改起作用了,__init__操作并没其作用。...主要原因是创建类实例是__new__方法中执行__init__方法中实例已经生成了,改三要素也不会再一次生成类实例。所以要想在__init__方法中起到作用,只能修改实例本身。

63530

【从零学习python 】46. Python__new__和__init__方法解析及单例设计模式

__new__和__init__方法 class A(object): def __init__(self): print("这是 init 方法") def __new...__new__(cls) A() 总结 __new__至少要有一个参数cls,代表要实例化类,此参数实例化时由Python解释器自动提供。 __new__必须要有返回值,返回实例化出来实例。...__init____new__基础上可以完成一些其他初始化动作。__init__不需要返回值。...__new__方法创建实例时被调用。如果__instance为None,说明还没有创建实例,此时通过object__new__方法创建一个新实例,并将其赋值给__instance。...如果__instance不为None,说明已经创建过实例,直接返回当前__instance实例。 __init__方法实例化后调用。如果是第一次创建实例,则进行初始化操作。

12410
  • 利用Python3内置文档资源高效学习及官方中文文档

    从前面的对Python基础知识方法介绍中,我们几乎是围绕Python内置方法进行探索实践,比如字符串、列表、字典等数据结构内置方法,和大量内置标准库,诸如functools、time、threading...我们可以利用Python内置文档大量资源既可以掌握许多关于Python工具集基本使用。...,但我们仍然不知道这些属性方法含义,那么我们可以利用文档字符串帮助我们继续学习对象属性。...文档字符串:doc 文档字符串是由Python自动生成,而生成内内容和位置取决于我们放置方式,文档字符串也是一段注释,放在模块文件、函数以及类语句顶端,然后Python会自动封装这个字符串,即成为所谓文档字符串...官方中文文档 对于英文阅读有一定困难小伙伴,新出Python官方中文文档是较好学习体验教程:docs.python.org/zh-cn/3/,从入门教程,标准库,在到Python高级特性应有尽有,算是不错学习资源和一本常用

    47920

    Python自学成才之路 详解类三个重要方法__new__,__init__,__call__

    文章目录 __call__方法 __new__和__init__ 这里对类做两种划分,元类和普通类(基类中不包含type)。...__call__方法 首先介绍一下__call__方法python中要想一个类对象能够像函数一样被调用,那这个类需要实现__call__方法。...注意:__new__参数一般是用cls,cls表示类本身,__new__中还没有实例对象。__init__中用self,self表示实例,此时对象已经产生了。...上面其实介绍都是普通类__new__, init, __call__方法,实际上元类这三个方法含义和普通类是一样,只是元类实例是类,所以元类这三个方法作用依次是 new:创建元类对象(类实例...这两个方法除了第一个参数不一样之外,后面两个参数值是完全一样,其实通过__new__方法已经把完整类实例创建好了,那__init__方法到底可以做什么?

    32510

    Python进阶教程笔记(三)类特殊方法

    一、什么是特殊方法 双下划线开头 双下划线结尾 每个Python对象都拥有特殊方法 常见特殊方法 __str__(), __add__(), __sub__(), __mul__(), __truediv...__(), __len__(), __new__(), __init__(), __del__(), __repr__(), __bytes__(), __format__(), __lt__(), _...另外,细心同学可能注意到了,相比加减乘特殊方法,除法特殊方法名字较长__truediv__,并且含有true这样描述,这其实和Python除法是有关系。...Python除法可以分为地板除(你没看错,就是地板)和普通除法,地板除特殊方法是__floordiv__,普通除法是__truediv__。...六、类__call__方法 Python中,函数其实是一个对象,我们可以将一个函数赋值给一个变量,而不改变函数功能。

    92541

    Python语言学习基础:魔术方法定义、迭代器与生成器、常用魔术方法及其分类型介绍

    魔术方法定义 先来了解魔术方法Python语言中魔术方法是以双下划线(__)开头和结尾特殊方法,这些方法在对象创建、操作和销毁等过程中被自动调用,从而实现对对象控制和定制。...而且魔术方法具有特殊命名规则,如__init__用于对象初始化,__str__用于对象字符串表示等。通过定义和实现这些魔术方法,我们可以自定义对象行为和特性。...在上面的示例代码块中,__init__方法被用来初始化MyClass类实例,通过传递参数name,我们可以初始化时给对象设置一个名字,然后调用say_hello方法来打印出相应问候语。...生成器是一种特殊迭代器,它可以通过函数中yield语句来实现,生成器函数每次调用时返回一个值,并在下一次调用时从上次离开地方继续执行,个人觉得这种方式可以有效地节省内存空间,并提供一种简洁方式来生成序列...__new__(cls[, args...]) 2、字符串表示 __str__(self) str(obj) print(obj) __repr__(self) repr(obj) 3、容器操作 __len

    61144

    property、魔法方法和继承

    实现对方法属性操作形式 @property 只能装饰 get 方法上 可以通过 xxx.setter 实现 set方法定义 魔法属性和魔法方法 ---- Python 中预先定义好了一些以 __xxx...__doc__ 属性 文档字符串,DocString用来对模块,类,方法进行说明字符串 可以通过 help 方法获取帮助时自动调用 __module__ 、__class__ 、__bases__...__init__ 、__new__ 方法 __init__方法用来对类中成员进行初始化,创建对象时自动调用 __new__方法创建对象时向内存中申请空间方法init 方法执行之前自动调用执行...对象调用函数这种形式称为仿函数 __getitem__ 、 __setitem__ 、__delitem__ 、__len__ 、__str__ 方法 实现这几个item 方法,可以让类对象操作时...,使用下标进行操作 使用 len函数时,会调用 __len__ 这个方法 __str__方法python 提供一种让用户自定义对象显示形式接口 多重继承和多继承 ---- 继承概念 Python

    54630

    Python Magic Method 与 Setup 方法:深入解析与应用

    Python魔法方法 Python魔法方法,也称为双下划线方法特殊方法,格式为 “方法名”。这些方法无需主动调用,而是特定场景下由 Python 解释器自动调用。...魔法方法不同场景下被调用,例如: __init__创建类实例时初始化属性,是对象实例化时最常见被调用方法之一。...__new__ 创建一个实例过程中必定会被调用,但 __init__ 就不一定,比如通过 pickle.load 方式反序列化一个实例时就不会调用 __init__。...__new__ 方法总是需要返回该类一个实例,而 __init__ 不能返回除了 None 任何值。...例如,构建一个自定义数据结构类时,可以使用 Magic Method 来定义该类特殊行为,如 __len__ 方法用于返回数据结构长度。

    7910

    python粗谈面向对象(二)

    静态方法:这是一个特殊方法,它除了类空间内创建了一个函数外,和类没有任何关系,使用装饰器@staticmethod。...双下方法:这也是个特殊方法,他是解释器提供由双下划线加方法名加双下划线 __方法名__具有特殊意义方法,双下方法主要是python源码程序员使用,我们开发中尽量不要使用双下方法,但是深入研究双下方法...实例对象调用方法时就不需要传递参数,这是因为Python为我们隐式把实例对象空间地址传给了实例方法,所以实例对象调用实例方法时不会报错,因为Python已经为我们将参数隐式传递给了实例方法。...那如果我类A中定义一个用于统计字符串长度函数__len__,是不是类对象统计属性长度时就可以调用本类中len功能了呢?...按照Python一切皆对象理论,类其实也是一个对象,那么类这个对象是从哪里实例化出来呢?

    62930

    Python基础:Python类(真累~

    声明: 一、类属性 (私有属性和公有属性) (类属性) 二、类方法 (构造方法、析构方法、自定义方法特殊成员方法) (静态方法、类方法、类属性) 三、类继承 (方法和属性继承,方法重构)...“新式类”和“经典类”区分在Python 3之后就已经不存在,Python 3.x之后版本,因为所有的类都派生自内置类型object(即使没有显示继承object类型),即所有的类都是“新式类”...类构造方法、析构方法、自定义类方法、静态方法、类方法、属性方法特殊成员方法。 构造方法:__init__ 实例化类后就会运行函数。...t,t = Test()就是由__new__方法return得到 __len__ 待续 __cmp__ 待续 '''例子一call\str\getitem\setitem\delitem方法...可能你会注意到,type结果前是class。。。因为数据类型Python中都是类定义,这也说明了,为什么数字,字符等等全是对象。

    70620

    Python反射与双下方法

    在其他语言中,如Java中只有方法,C中只有函数,C++么,则取决于是否类中 双下方法 __len__ class B: def __len__(self): return 666...注:此方法一般无须定义,因为Python是一门高级语言,程序员使用时无需关心内存分配和释放, 因为此工作都是交给Python解释器来执行,所以,析构函数调用是由解释器进行垃圾回收时自动触 发执行...__new__ __new__() 方法类准备将自身实例化时调用。...__new__() 方法始终都是类静态方法,即使没有被加上静态方法装饰器 通常来说,新式类开始实例化时, __new__() 方法会返回cls(cls指代当前类)实例,然后该类 __init__...__instance a=A() b=A() print(a==b) 单例模式是一种常用软件设计模式。核心结构中只包含一个被称为单例类特殊类。

    31620

    一文了解 Python “Magic” 方法

    以前文章中,我聊过了 Python __getitem__ 和 __setitem__ 方法。...你会再一次深深爱上 Python 语言。 也将是一篇较长文章,来让我们开始。 魔法方法究竟是什么? 魔法方法是一种具有特殊魅力正常方法。...坦率讲,其实这些方法并没有什么魔法,另外这些方法Python 文档中也没有较为详细介绍,因此,今天我们就来详细看一看这些方法。...虽然,__init__() 方法是第一个被创建,但是它却不是第一个被调用执行,__new__() 方法才是最早被调用方法。...__new__() 方法:先读取参数,如:类名称,args,和 kwargs。然后,__new__() 方法把这些参数传递给对类名称 __init__() 方法

    92720

    不知道鸭子类型就当没学过python

    python中万物皆对象实现机制 python中如何实现自定义序列类型 python元类编程 ✨ 回顾一下之前讲到python万物皆对象实现机制 python中,函数和类也是对象,属于python...魔法函数好处多多 魔法函数是python特殊方法,那你可以理解为,这些特殊方法是一些定义好回调行为, 所以魔法函数不能自定义,定义之后不需要调用,若你将这些行为用到自己类中,那么当触发这个回调后就会调用这个方法...__:Python中,我们经常会使用len()函数获取一个对象长度,实际上在其内部会自动调用该对象__len__()方法 tips: python内置类型(int list dict)底层均为c语言写..., 需要用cython解释器去执行,所以长度一开始分配内存空间时候就已经确定了,而不是去遍历,所以用魔法函数len效率高 栗子: class WordNums(): def __init__...__iter__, __next__:迭代相关 __call__,__new__,__init__:一般元类编程中会使用,使用方法可以参考之前元类编程文章。

    53820

    一文了解 Python “Magic” 方法

    以前文章中,我聊过了Python __getitem__ 和 __setitem__ 方法。...也将是一篇较长文章,来让我们开始。 魔法方法究竟是什么? 魔法方法是一种具有特殊魅力正常方法Python通过这些魔法方法可以赋予你class魔力。...这些魔法方法都是以双下划线(__)作为前缀和后缀。坦率讲,其实这些方法并没有什么魔法,另外这些方法Python文档中也没有较为详细介绍,因此,今天我们就来详细看一看这些方法。...虽然,__init__()方法是第一个被创建,但是它却不是第一个被调用执行,__new__()方法才是最早被调用方法。...__new__()方法:先读取参数,如:类名称,args,和kwargs。然后,__new__()方法把这些参数传递给对类名称__init__()方法

    43030

    Datawhale组队学习 -- Task07:类、对象与魔法方法

    Python 魔法方法 ---- 据说,Python 对象天生拥有一些神奇方法,它们是面向对象 Python 一切... 它们是可以给你类增加魔力特殊方法......如果你对象实现了这些方法某一个,那么这个方法就会在特殊情况下被 Python 所调用,而这一切都是自动发生......构造器,当一个实例被创建时候调用初始化方法 __new__(cls[, ...]) 一个对象实例化时候所调用第一个方法调用__init__初始化前,先调用__new__。...__new__至少要有一个参数cls,代表要实例化类,此参数实例化时由 Python 解释器自动提供,后面的参数直接传递给__init__。...__new__(cls[, ...]) 一个对象实例化时候所调用第一个方法调用__init__初始化前,先调用__new__。 __init__(self[, ...])

    29470

    Python私有化及_下划线命名用途

    那么Python中如何做呢?...不过,这个约定对Python解释器并没有特殊含义。与Java不同,Python “私有” 和 “公共” 变量之间并没有很强区别。...这是因为 Python前置单下划线只是一个公认约定,至少涉及变量名和方法名时是这样。...__前后双下划线__ 前后均带双下划线命名,一般用于特殊方法命名,用来实现对象一些行为或者功能,比如 __new__() 方法用来创建实例,__init__() 方法用来初始化对象,x + y操作被映射为方法...如果在子类中向 __名字 赋值,那么会在子类中定义一个与父类相同名字属性。 __xx__ 魔法对象或属性,有着特殊作用。不要随意起这种命名。 xx_ 用于避免与Python关键词冲突。

    88000

    Python私有化及_下划线命名用途

    那么Python中如何做呢?...不过,这个约定对Python解释器并没有特殊含义。与Java不同,Python “私有” 和 “公共” 变量之间并没有很强区别。...这是因为 Python前置单下划线只是一个公认约定,至少涉及变量名和方法名时是这样。...__前后双下划线__ 前后均带双下划线命名,一般用于特殊方法命名,用来实现对象一些行为或者功能,比如 __new__() 方法用来创建实例,__init__() 方法用来初始化对象,x + y操作被映射为方法...如果在子类中向 __名字 赋值,那么会在子类中定义一个与父类相同名字属性。 __xx__ 魔法对象或属性,有着特殊作用。不要随意起这种命名。 xx_ 用于避免与Python关键词冲突。

    58710

    Python中几个常用方法

    对应值,等价于seq[key]  __len__(self) 调用内联函数len()时被调用  __cmp__(stc,dst) 比较两个对象src和dst  __getattr__(s,name...__(): __init__方法一个对象被建立时,马上运行。...最重要是,我们没有专门调用__init__方法,只是创建一个类新实例时候,把参数包括圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法重要之处。...__new__(): __new__()__init__()之前被调用,用于生成实例对象.利用这个方法和类属性特性可以实现设计模式中单例模式.单例模式是指创建唯一对象吗,单例模式设计类只能实例化一个对象...  def __init__(self):     pass   def __new__(cls, *args, **kwd):     # __init__之前调用     if Singleton

    46820
    领券