python里加号,python类添加方法
本文主要介绍python对用户自定义类使用加号 。如果直接" "两个对象,肯定不行,因为加法运算符__add__()还没有为CartoonImage类重载。下面小编举例说明内容,有需要的可以参考。
00-1010 1.python的魔法__add__()2。重载CartoonImage 2.1。实现CartoonImage类3。测试“”能否实现图像拼接3.1。对CartoonImage对象使用“”操作。如果代码是“1 1”,python控制台必然输出2,这非常符合我们对“数值类”的理解
假设你现在要设计一个CartoonImage类,能实现它的对象之间的“”操作吗?例如,如果要对两个卡通图像对象卡通_1和卡通_2使用“”运算符,以获得最右边的图像(即拼接函数):
如果直接" "两个对象肯定不行,因为加法运算符__add__()还没有在CartoonImage类上重载。例如,下面的代码不起作用:
# 1:创建对象
cartoon _ 1=cartonimage( data/left . jpg )
cartoon _ 2=cartonimage( data/right . jpg )
## 2:使用" "进行加法运算
concat_image=卡通_1卡通_2
本文将从以下两个方面来讨论如何对自定义类实现“+”法操作:
(1)python的魔术方法__add__()(2)重载CartoonImage " "进行减法、乘法等运算。对应魔法__sub__(),_mul__(),等等。和加法一样。你只需要根据你想要实现的功能重载即可。
目录
python中的“”操作对应的是后面的_ _ add _()方法,比如自定义一个简单的类Fun。通过实现Fun类的_ _ add _()方法,Fun的对象可以支持“”操作:
A:级
def __add__(self,x):
打印(立即添加!)
a1=A()
a2=A()
a1 a2
执行上面的代码控制台将显示:“正在添加!”,也就是说“a1 a2”触发了a类的__add__()方法,在__add__()方法内部,我们可以实现任何想要的功能,比如添加两个对象的一些属性,或者打印一些控制信息。
1、python的魔法方法__add__()
2、对CartoonImage重载“+”
本节通过一个小例子具体说明如何使用__add__()方法实现更广泛的定制功能。
首先,我们设计一个名为Cartoonimage的类,它包含一个属性image。我们使用self.image来存储卡通图片。
CartoonImage的初始化函数如下:
类carton image():
def __init__(self,image):
如果是图片的路径(str类型)请输入以读取图片,
如果是图片的数据值(ndarray类型),直接初始化
if isinstance(image,str):
self . image=imageio . im read(image)[:0:3]
elif isinstance(image,np.ndarray):
自我形象=形象
初始化函数__init__()接收一个图像参数,可以是字符串(代表图片的路径),也可以是数组(代表图片的值)。初始化只需要一个属性self.image,稍后我们将" "这个属性。
对于__add__()魔法方法来说,它的作用完全取决于你想要什么,而不是狭义的加法运算。比如你想“拼接”两张图片,这种拼接可以通过“”来实现,所以你可以在_ _ add _()中做如下操作:
def __add__(自己,另一个_漫画):
“过载”实现图像拼接功能
concat _ image=NP . concatenate((self . image,another_cartoon.image),axis=1)
concat _ cartoon=cartonimage(concat _ image)
返回concat_cartoon
2.1 实现CartoonImage类
3、测试“+”是否能实现图像拼接
__add__()方法已经在中实现,现在可以对CartoonImage对象使用“”操作,
代码如下(文章开头处的代码):
# 1:创建对象
cartoon _ 1=cartonimage( data/left . jpg )
cartoon _ 2=cartonimage( data/right . jpg )
# 2:使用“”进行添加
concat_image=卡通_1卡通_2
现在就能实现一开始的拼接效果了:
再次指出“concat _ image=cartoon _ 1 cartoon _ 2”调用__add__(self,another_cartoon)函数。
这就是这篇关于在python中让自定义类使用加号“”的文章。有关使用加号的python自定义类的更多信息,请搜索流行的IT软件开发工作室以前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。