python __add__()的具体使用

__add__(),  同一个类,两个对象相加的实现逻辑,重写 +

class Myclass(object):
    def __init__(self,value):
        self.value = value

    def __add__(self, other):
        return self.value + other.value

if __name__ == '__main__':
    o1 = Myclass(1)
    o2 = Myclass(2)
    print(o1+o2)

打印结果:

3

self 只本身对象,other 指另一个对象(同属于Myclass 类)

python中 “__add__”和“__iadd__” 的区别

__add__”和“__iadd__” 的区别, 两个同为拼接操作

add iadd
list list
tuple

list中是两个都可以使用;而tuple中却只能使用一个 。

1、__add__属性

b = [7, 8, 9, 10, 11, 12]
d = [19, 20, 21, 22, 23, 24]

# 执行了拼接动作,拼接后的值被return出来
g = b.__add__(d)
print(g)

执行结果如下:

D:\python_env\Scripts\python.exe F:/TESTING/BlogPosts/ReadAndWrite/list_and_tuple.py
[7, 8, 9, 10, 11, 12, 19, 20, 21, 22, 23, 24]

Process finished with exit code 0

2、__iadd__属性

b = [7, 8, 9, 10, 11, 12]
d = [19, 20, 21, 22, 23, 24]

# 执行拼接动作,属于就地拼接
h = b.__iadd__(d)
print(h)

执行结果如下:

D:\python_env\Scripts\python.exe F:/TESTING/BlogPosts/ReadAndWrite/list_and_tuple.py
[7, 8, 9, 10, 11, 12, 19, 20, 21, 22, 23, 24]

Process finished with exit code 0

以上两种都执行后,发现结果基本都是一致,看不出来什么花样,于是我们在调试模式下进行区分,一目了然 。如下展示:

上图是执行到__add__后直接return返回出来的。下图是执行__iadd__后,先拼接一下再把值返出来,注意它不是return出来的 。

到此这篇关于python __add__()的具体使用的文章就介绍到这了,更多相关python __add__()使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于python中__add__函数的用法

    运算符重载 _add ##定义:让自定义的类生成的对象(实例)能够使用运算符进行操作 class Vector01: '''定义一个一维向量''' def init(self,x): self.x = x def str(self): '''定义新生成的返回值是什么,如果没有这个之间返回的是类的特点''' return ('一维向量的分量是:%d' % (self.x)) def add(self, other): #表示print内的+ # print('参数是:',other) return

  • python __add__()的具体使用

    __add__(),  同一个类,两个对象相加的实现逻辑,重写 + class Myclass(object): def __init__(self,value): self.value = value def __add__(self, other): return self.value + other.value if __name__ == '__main__': o1 = Myclass(1) o2 = Myclass(2) print(o1+o2) 打印结果: 3 self 只本身对象

  • Python数据类型详解(一)字符串

    一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list 列表用[] 元祖:tuple 元祖用() 字典:dict 注:所有的数据类型都存在想对应的类列里 二.字符串所有数据类型: 基本操作: 索引,切片,追加,删除,长度,切片,循环,包含 class str(object): """ str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -

  • python字符类型的一些方法小结

    int 数字类型 class int(object): """ int(x=0) -> int or long int(x, base=10) -> int or long Convert a number or string to an integer, or return 0 if no arguments are given. If x is floating point, the conversion truncates towards zero. If

  • 复习Python中的字符串知识点

    字符串 在 Python 中创建字符串对象非常容易.只要将所需的文本放入一对引号中,就完成了一个新字符串的创建(参见清单 1).如果稍加思考的话,您可能会感到有些困惑.毕竟,有两类可以使用的引号:单引号 (') 和双引号 (").幸运的是,Python 再一次使这种问题迎刃而解.您可以使用任意一类引号来表示 Python 中的字符串,只要引号一致就行.如果字符串是以单引号开始,那么必须以单引号结束,反之亦然.如果不遵循这一规则,则会出现 SyntaxError 异常. 清单 1. 在 Pytho

  • Python面向对象编程中的类和对象学习教程

    Python中一切都是对象.类提供了创建新类型对象的机制.这篇教程中,我们不谈类和面向对象的基本知识,而专注在更好地理解Python面向对象编程上.假设我们使用新风格的python类,它们继承自object父类. 定义类 class 语句可以定义一系列的属性.变量.方法,他们被该类的实例对象所共享.下面给出一个简单类定义: class Account(object): num_accounts = 0 def __init__(self, name, balance): self.name =

  • 自己使用总结Python程序代码片段

    用于记录自己写的,或学习期间看到的不错的,小程序,持续更新...... **************************************************************** [例001]计算:1-2+3-4..+199-200值 复制代码 代码如下: #encoding=utf-8  #计算 1-2+3-4..+199-200值  #1+3+5+7+...199  #-2-4-6...-200  sum1  = 0  sum2  = 0  for i in range

  • Python入门篇之面向对象

    面向对象设计与面向对象编程的关系   面向对象设计(OOD)不会特别要求面向对象编程语言.事实上,OOD 可以由纯结构化语言来实现,比如 C,但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更多的努力.当一门语言内建 OO 特性,OO 编程开发就会更加方便高效.另一方面,一门面向对象的语言不一定会强制你写 OO 方面的程序.例如 C++可以被认为"更好的C":而 Java,则要求万物皆类,此外还规定,一个源文件对应一个类定义.然而,在 Python 中,类和 OOP 都不是

  • 深入讲解Python中面向对象编程的相关知识

    Python从第一天开始就是面向对象的语言.正因为如此,创建和使用类和对象是非常地容易.本章将帮助您在使用Python面向对象编程的技术方面所有提高. 如果没有任何以往面向对象(OO)的编程的经验,那么可能要了解一些基本的入门课程就可以了,或者至少某种形式的教程,让你有了解基本概念. 但是,这里会比较少地介绍面向对象编程(OOP): OOP术语概述 类: 用户定义的原型对象,它定义了一套描述类的任何对象的属性.属性是数据成员(类变量和实例变量)和方法,通过点符号访问. 类变量:这是一个类的所有实

  • Python正确重载运算符的方法示例详解

    前言 说到运算符重载相信大家都不陌生,运算符重载的作用是让用户定义的对象使用中缀运算符(如 + 和 |)或一元运算符(如 - 和 ~).说得宽泛一些,在 Python 中,函数调用(()).属性访问(.)和元素访问 / 切片([])也是运算符. 我们为 Vector 类简略实现了几个运算符.__add__ 和 __mul__ 方法是为了展示如何使用特殊方法重载运算符,不过有些小问题被我们忽视了.此外,我们定义的Vector2d.__eq__ 方法认为 Vector(3, 4) == [3, 4]

随机推荐