首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >重载加、减和乘运算符

重载加、减和乘运算符
EN

Stack Overflow用户
提问于 2013-12-10 23:44:23
回答 3查看 58.5K关注 0票数 29

如何重载加法、减法和乘法运算符,以便我们可以对大小不同或相同的两个向量进行加、减、乘操作?例如,如果向量的大小不同,我们必须能够根据最小的向量大小对这两个向量进行加、减或乘。

我已经创建了一个函数,允许您修改不同的向量,但现在我正在努力重载运算符,并且没有从哪里开始的线索。我将粘贴下面的代码。有什么想法吗?

代码语言:javascript
运行
AI代码解释
复制
def __add__(self, y):
    self.vector = []
    for j in range(len(self.vector)):
        self.vector.append(self.vector[j] + y.self.vector[j])
    return Vec[self.vector]
EN

回答 3

Stack Overflow用户

发布于 2013-12-10 23:50:36

您为类define the __add__, __sub__, and __mul__方法,这就是方法。每个方法接受两个对象( +/-/*)的操作数作为参数),并期望返回计算结果。

票数 38
EN

Stack Overflow用户

发布于 2017-11-28 01:02:52

这个问题的公认答案没有错,但我添加了一些快速片段来说明如何使用它。(请注意,您还可以“重载”该方法以处理多种类型。)

代码语言:javascript
运行
AI代码解释
复制
"""Return the difference of another Transaction object, or another 
class object that also has the `val` property."""

class Transaction(object):

    def __init__(self, val):
        self.val = val

    def __sub__(self, other):
        return self.val - other.val


buy = Transaction(10.00)
sell = Transaction(7.00)
print(buy - sell)
# 3.0

代码语言:javascript
运行
AI代码解释
复制
"""Return a Transaction object with `val` as the difference of this 
Transaction.val property and another object with a `val` property."""

class Transaction(object):

    def __init__(self, val):
        self.val = val

    def __sub__(self, other):
        return Transaction(self.val - other.val)


buy = Transaction(20.00)
sell = Transaction(5.00)
result = buy - sell
print(result.val)
# 15

代码语言:javascript
运行
AI代码解释
复制
"""Return difference of this Transaction.val property and an integer."""

class Transaction(object):

    def __init__(self, val):
        self.val = val

    def __sub__(self, other):
        return self.val - other


buy = Transaction(8.00)
print(buy - 6.00)
# 2
票数 13
EN

Stack Overflow用户

发布于 2013-12-10 23:47:16

docs有答案。基本上,当您添加或多个对象时,会在对象上调用一些函数,例如__add__是普通的add函数。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20507745

复制
相关文章
python的加、减、乘、除、取整、取余计算
加法: 输入以下代码: >>>1+1 >>>1.0+1 减法: 输入以下代码: >>>1-2 >>>1.0-2 乘法: 输入以下代码: >>>2*4 >>>2.0*4 除法: 输入以下代码: >>>2
周小董
2019/03/25
1.7K0
python的加、减、乘、除、取整、取余计算
基于python的空域变换(加、减、乘、平移、翻转、缩放)
空域变换 空域:是指图像所在的平面,即像素位置所在的空间。 空域变换:对像素点的位置和灰度值根据图像变化目的需要,对图像矩阵进行运算操作,形成另一幅图像。 空域变换分类:算术逻辑变换、几何变换、灰度变换、直方图变换。 加法运算 主要应用 去除叠加性噪声 生成图像叠加效果 import cv2 as cv img1 = cv.imread("1.jpg") img2 = cv.imread("2.jpg") print(img1.shape,img2.shape) img1=cv.resize(img1,(
跋扈洋
2021/02/02
9180
基于python的空域变换(加、减、乘、平移、翻转、缩放)
不使用加, 减, 乘, 除, 取余如何实现除以 3
回答 如何在不使用加、减、乘、除、取余的情况下,实现除以 3 的功能? 这个数字既可能是无符号整型也可能是有符号的。 回答 // replaces the + operator int add(int x, int y) { while (x) { int t = (x & y) << 1; y ^= x; x = t; } return y; } int divideby3(int num) { int sum = 0;
ClearSeve
2022/02/11
3580
C++ 自增、自减运算符的重载和性能分析
a 先自增 +1 后, a 的值就为 1 ,然后再参与 a=5 的运算,所以最后 a的值是 5。
小林coding
2020/04/01
1.1K0
C++ 自增、自减运算符的重载和性能分析
【C++】运算符重载 ⑦ ( 一元运算符重载 | 后置运算符重载 | 使用 全局函数 实现 后置 ++ 自增运算符重载 | 使用 成员函数 实现 后置 -- 自减运算符重载 )
韩曙亮
2023/10/15
2230
【C++】运算符重载 ⑦ ( 一元运算符重载 | 后置运算符重载 | 使用 全局函数 实现 后置 ++ 自增运算符重载 | 使用 成员函数 实现 后置 -- 自减运算符重载 )
【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 )
为了使全局函数中能访问 Student 类的私有成员 , 需要将该全局函数声明为 友元函数 ;
韩曙亮
2023/10/15
2250
【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 )
【C++】运算符重载 ⑤ ( 一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 )
韩曙亮
2023/10/15
2040
【C++】运算符重载 ⑤ ( 一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 )
【公基】口算提速,java 自动生成:加、减、乘、除、混合运算题目
效果图 先确定训练那种运算 以及训练多少题: 具体运算: 结果分析 代码 废话不多说,直接上代码 package 行测; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import java.util.Scanner; public class Ca
圆号本昊
2022/11/21
3950
【公基】口算提速,java 自动生成:加、减、乘、除、混合运算题目
C++运算符重载和函数重载
所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(Operator Overloading)也是一个道理,同一个运算符可以有不同的功能。
嵌入式视觉
2022/09/05
7630
【Groovy】Groovy 运算符重载 ( 运算符重载 | 运算符重载对应方法 )
Groovy 类可以进行运算符重载 , 任何一个类都可以使用预定义的 运算符 进行运算 , 如 " + - * / " 加减乘除 操作 , Groovy 中支持
韩曙亮
2023/03/30
2.9K0
【Groovy】Groovy 运算符重载 ( 运算符重载 | 运算符重载对应方法 )
C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数 和运算符 指定多个定义,分别称为函数重载 和运算符重载。
爱学iOS的小麦子
2023/05/05
7440
C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
狼啸风云
2020/10/28
2.1K0
运算符重载之左移运算符重载
左移运算符重载 #include<iostream> using namespace std; class wood { friend ostream& operator<<(ostream& cout, wood& d); public: wood(int num):num(num){} private: int num; }; //左移运算符重载只能用全局函数 ostream& operator<<(ostream& cout, wood& d) { cout << "木头的数量为" << d.
大忽悠爱学习
2021/02/22
5480
运算符重载之递增运算符重载
递增运算符重载 #include <iostream> using namespace std; //声明类 class wood { friend ostream& operator<<(ostream& cout, wood myint); public: //默认构造函数将m_Num初始化为0 wood() { m_Num = 0; } //前置递增++ //如果不用引用,就是调用重载函数,调用完之后就销毁(因为放在栈区) //引用是别名,调用地址 wood& opera
大忽悠爱学习
2021/02/22
3830
C++不知算法系列之高精度数值的加、减、乘、除算法
高精度数值指因受限于计算机硬件的制约,超过计算机所能存储范围的数值。既然不能存储,更谈不上运算。
一枚大果壳
2022/12/20
1.5K0
C++不知算法系列之高精度数值的加、减、乘、除算法
运算符重载之加号运算符重载
加号运算符重载 运算符重载:对已有运算符的重新定义,赋予其另一种功能,以适应不同的数据类型 #include<iostream> using namespace std; class pig{ public: int kilogram; //重量 int price; //价钱 //成员函数重载+号运算符 //pig operator+(pig& p) //{ // pig temp; // temp.kilogram = this->kilogram + p.kilogram;
大忽悠爱学习
2021/02/22
6820
C++学习之路——函数重载和运算符重载
C++允许在同一作用域中的某个函数和运算符指定多个定义,分 别称为函数重载和运算符重载
全栈程序员站长
2022/09/23
4320
C++学习之路——函数重载和运算符重载
C++重载运算符练习--对people类重载“= =”运算符和“=”运算符
题目描述 对people类重载“= =”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。 代码如下 #include<iostream> #include<string> using namespace std; class Data{ public: Data(){} Data(int yy,int mm,int dd){ year=yy; month=mm; day=dd;
Enterprise_
2018/05/18
3.2K2
C++重载运算符练习--对people类重载“= =”运算符和“=”运算符
题目描述 对people类重载“= =”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。 代码如下 #include<iostream> #include<string> using namespace std; class Data{ public: Data(){} Data(int yy,int mm,int dd){ year=yy; month=mm; day=dd;
Enterprise_
2019/03/01
3930
C++重载运算符练习--对people类重载“= =”运算符和“=”运算符
从零开始学C++之运算符重载(二):++运算符重载、!运算符重载、赋值运算符重载
该文介绍了C++编程规范中的命名规则、注释、变量和常量、数据类型、运算符重载、自增和自减运算符、类和对象、构造函数和析构函数、拷贝构造函数、赋值运算符重载、取地址运算符重载、左值和右值、虚函数、纯虚函数、抽象类、接口、异常处理、输入输出流、文件操作、命名空间、C++标准模板库、掌握C++语言开发工具、掌握C++语言编程技巧以及C++11、C++14、C++17、C++20的新特性。
s1mba
2017/12/28
1.2K0
从零开始学C++之运算符重载(二):++运算符重载、!运算符重载、赋值运算符重载

相似问题

复数加、乘、除、减问题- C++ -运算符重载

130

加、减、除、乘小数

23

加、减、乘、除模板函数

20

加、减、乘2个int数组

12

需要解释PHP中的加/减/乘和除

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档