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

python的特殊方法

整个的框架: 迭代 集合类 属性访问 运算符重载 函数和方法的调用 对象的创建和销毁 字符串表示形式和格式化 管理上下文(with语句) 开篇提到了__getitem__和__len__方法,看下面的示例代码...card = FrenDeck() 对上面这个类实例化 len(card) Out[6]: 52 也就是说有了__len__这个方法,重载了len方法,在这上面做一下修改: def __len...python的语言特性 和这个相似的方法有 __getitem__:这样就可以迭代了以及切片了 __contains__:in运算符就有意义了 这些特殊方法的使用 1.这是为了给python解释器调用,...而不是自己的类调用,而这个是你自定义的类,会如上所示,会使用你的__len__方法 2.如果len这个是python内置类型,会直接调用PyVarObject里的ob_size 3.不要随意调用这些特殊方法...通过实现特殊方法,可以使得你的类和python的内置类型一样

59330

Python 类特殊方法__getitem__

凡是在类中定义了这个__getitem__ 方法,那么它的实例对象(假定为p),可以像这样p[key] 取值,当实例对象做p[key] 运算时,会调用类中的方法__getitem__。...一般如果想使用索引访问元素时,就可以在类中定义这个方法(__getitem__(self, key) )。先用一个夸张一点的例子来说明这个问题。?...当实例对象通过[] 运算符取值时,会调用它的方法__getitem__,从上面代码中输出二个笑脸可以看出来。...Python 联系方式,自己搜'''class DataBase: '''Python 3 中的类''' def __init__(self, id, address): '''初始化方法...Python 联系方式,自己搜'''class DataBase: '''Python 3 中的类''' def __init__(self, id, address): '''初始化方法

2.6K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python学习——数据模型特殊方法

    简单来说,数据模型就是Python自身的数据类型,及其包含的特殊方法。这些特殊方法在Java中也被成为‘魔术方法’。...如len(object)调用了__len__特殊方法,list[]调用了__getitem__方法。...从根本来说,这些特殊方法能让你的对象实现和支持与迭代、集合、属性访问、运算符、函数和方法、对象创建与销毁、字符串以及管理上下文的语言框架。...如何调用特殊方法 1.特殊方法的调用是隐式的,通常你的代码无需直接使用特殊方法。除非有大量的元编程存在,直接调用特殊方法的频率应该远远低于你去实现它们的次数。...2.通过内置的函数(例如len、iter、str等)来使用特殊方法是最好的选择。这些内置函数不仅会调用特殊方法,通常还提供额外的好处,而且对于内置的类来说,它们的速度更快。

    49410

    【说站】python特殊方法有哪些

    python特殊方法有哪些 说明 在类中,__开头和结尾的方法特殊方法特殊方法特殊的用途。...特殊方法举例 1、__init__()用于对象的初始化。 __init__()是非常典型的一个特殊方法,它用于对象的初始化。在实例化类的过程中,被自动调用。...3、调用len() 时自动调用容器的 __len__() 方法。 调用 len() 函数时,便能返回一个容器的长度。...原因就是容器类中实现了 __len__() 方法,调用 len() 函数时将自动调用容器的 __len__() 方法。 4、使用 print() 将自动调用__str__。...实例代码 class A:     def __str__(self):         return '这是 A 的对象' 以上就是python特殊方法的介绍,希望对大家有所帮助。

    32440

    Python对象特殊方法及其用法演示

    Python类有大量特殊方法,实现不同的特殊方法后该类对象则会支持对应的运算符或内置函数,下面的对应关系表列出了大部分特殊方法方法功能说明__new__()类的静态方法,用于确定是否要创建对象__init...__get__()定义了这三个特殊方法中任何一个的类称作描述符(descriptor),描述符对象一般作为其他类的属性来使用,这三个方法分别在获取属性、修改属性值或删除属性时被调用__set__()__...delete__() 下面举几个例子演示特殊方法的用法: # 普通类,对象不支持加法运算 >>> class T: def __init__(self, v): self....>", line 1, in t + 5 TypeError: unsupported operand type(s) for +: 'T' and 'int' # 为类实现特殊方法...__value + v) >>> t = T(3) >>> t + 5 # 为类实现特殊方法__repr__()和

    97260

    python 自定义类(特殊方法

    self.y = float(y) @classmethod # 装饰器, 函数不需要传入 self 参数,需要cls 传入类本身 # classmethod 最常见的用途是 定义备选构造方法...} 包含两部分 >>> format(8, 'b') # 二进制 '1000' >>> format(1/3, '.2%') # %百分比 '33.33%' 如果类没有定义 __format__ 方法...,从 object 继承的方法会返回 str(my_object),调用 __str__() print(format(v1)) # (315687.0, 4.0) print(format(v1, '...__x @property # @property 装饰器把读值方法标记为特性 def y(self): return self.__y v1...._Vector2D__x) # 315687.0 名称改写是一种安全措施,不能保证万无一失:它的目的是避免意外访问,不能防止故意做错事 Python 解释器不会对使用 单个下划线 的属性名做特殊处理

    57840

    python 中的特殊方法,纠正自己笨笨

    __new__ 和 __init__ 的区别 python 2.x 老式类(默认继承type) class A: pass 老式类中没有__new__类方法(也就是说定义也不会执行,它不是老式类的类方法...object'基类中拥有的方法和属性可通用于所有的新式类。  __new__ 为类方法,__init__ 为实例方法。...__new__ 类方法创建实例对象,__init__ 实例方法初始化实例对象。...__new__(cls),否则__init__ 不执行, object 与 super() 的区别:是否调用父类响应的方法 __new__ 的返回值的object....__get__, __getattr__, __getattribute__ 的区别 均是访问属性的方法,注意是属性 __getattr__(self, name) 当访问属性无法找到时,默认异常,可以自定义其返回值或者

    55440

    Python深入01 特殊方法与多范式

    Python的多范式依赖于Python对象中的特殊方法(special method)。 特殊方法名的前后各有两个下划线。...特殊方法又被成为魔法方法(magic method),定义了许多Python语法和表达方式,正如我们在下面的例子中将要看到的。当对象中定义了特殊方法的时候,Python也会对它们有“特殊优待”。...(可以通过dir()来查看对象所拥有的特殊方法,比如dir(1)) 运算符 Python的运算符是通过调用对象的特殊方法实现的。...在Python中,运算符起到简化书写的功能,但它依靠特殊方法实现。 Python不强制用户使用面向对象的编程方法。...总结 对于内置的对象来说(比如整数、表、字符串等),它们所需要的特殊方法都已经在Python中准备好了。而用户自己定义的对象也可以通过增加特殊方法,来实现自定义的语法。

    68350

    Python object类中的特殊方法代码讲解

    (包含特殊方法) def __dir__(self, *args, **kwargs): # real signature unknown """ Default dir() implementation...# 类的doc信息 __doc__ = '' # 类属于的模块,如果是在当前运行模块,则是__main__,如果是被导入,则是模块名(即py文件名去掉.py) __module__ = '' 二、常用特殊方法解释...__getattribute__方法 1)什么时候被调用 这个特殊方法是在我们使用类的对象进行obj.属性名或getattr(obj,属性名)来取对象属性的值的时候被调用。...2)与__getattr__的区别 我们在类的实现中,可以重写__getattr__方法,那么__getattr__方法和__getattribute__方法有什么区别?...__doc__) # 打印 这是一个类,名叫Foo 到此这篇关于Python object类中的特殊方法代码讲解的文章就介绍到这了,更多相关Python object类中的特殊方法内容请搜索ZaLou.Cn

    84130

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

    一、什么是特殊方法 双下划线开头 双下划线结尾 每个Python对象都拥有特殊方法 常见特殊方法 __str__(), __add__(), __sub__(), __mul__(), __truediv...这其实是对象的内建方法__str__返回的。 通过dir()方法,我们可以把对象的所有方法打印出来。...另外,细心的同学可能注意到了,相比加减乘的特殊方法,除法的特殊方法名字较长__truediv__,并且含有true这样的描述,这其实和Python除法是有关系的。...Python的除法可以分为地板除(你没看错,就是地板)和普通除法,地板除的特殊方法是__floordiv__,普通除法是__truediv__。...如果把一个类实例也变成一个可调用对象,可以实现一个特殊方法__call__()。

    92541

    python类之特殊属性和魔术方法

    一 python特殊属性 1 总述 属性 含义 _name_ 类,函数,方法等的名字 _module_ 类定义所现在的模块名 _class_ 对象或类所属的类 _bases_ 类的基类的元素,顺序为他们在基类列表中出现的顺序...3 结论 上述实例证明,当str和repr同时存在时,如果输出结果直接作用于对象上,则调用str方法,否则将调用repr方法 6 运算符重载 1 简介 operator 模块提供以下的特殊方法,...可以将类的实例使用下面操作符来进行操作 运算符 特殊方法 含义 ,>=,!...结论如下: b+a 等价于 b.add(a),但是B类没有实现add方法,就去找a的__radd__方法 1+a 等价于1.add(a),而int 类型实现了__add__放方法,不过这个方法对于这种加法的返回值是...注意:\getattribute\ 方法中为了避免在该方法中无限递归,实现了应该永久调用基类的同名方法以访问需要的任何属性,除非你明确知道\getattribute\方法用来做什么,否则不要使用它。

    1.8K20

    Python类中公开方法、私有方法特殊方法的继承原理

    _类名__私有成员名”这样一种特殊的形式来访问。 基类的构造方法和公开方法可以在类的外部直接访问,也可以被派生类继承。...in A') #公开方法在派生类中可以直接访问,也可以被覆盖 def public(self): print('public() method in A') #类B没有构造方法...,会继承基类的构造方法 >>> class B(A): #这不会覆盖基类的私有方法 def __private(self): print('__private() method in...B') #覆盖了继承自A类的公开方法public def public(self): print('public() method in B') #自动调用基类A构造方法 >>> b = B...另外,Python中的类还有大量特殊方法,详见Python对象特殊方法及其用法演示,在创建派生类时,基类中已经实现的特殊方法可以被派生类继承。

    2K50
    领券