首页 > 其他分享 >110:特殊方法和运算符重载

110:特殊方法和运算符重载

时间:2022-11-21 10:59:21浏览次数:47  
标签:__ name self 运算符 other 110 重载

###特殊方法和运算符重载

Python 的运算符实际上是通过调用对象的特殊方法实现的。比如:

a = 20
b = 30
c = a+b
d = a.__add__(b)
print("c=",c)
print("d=",d)

输出结果:

c= 50
d= 50

常见的特殊方法统计如下:

每个运算符实际上都对应了相应的方法,统计如下:

我们可以重写上面的特殊方法,即实现了“运算符的重载”。

# 测试运算符的重载

class Person:
    def __init__(self, name):
        self.name = name

    def __add__(self, other):
        if isinstance(other, Person):
            return "{0}--{1}".format(self.name, other.name)
        else:
            return "不是同类对象,不能相加"

    def __mul__(self, other):
        if isinstance(other, int):
            return self.name * other
        else:
            return "不是同类对象,不能相乘"


p1 = Person("高淇")
p2 = Person("高希希")

x = p1 + p2
print(x)
print(p1*3)

输出结果:

D:\work\python\three\venv\Scripts\python.exe D:\work\python\three\mypy22.py 
高淇--高希希
高淇高淇高淇

进程已结束,退出代码0

 

标签:__,name,self,运算符,other,110,重载
From: https://www.cnblogs.com/yuanzijian/p/16910653.html

相关文章

  • javascript: 用图片加载演示promise的应用(chrome 107.0.5304.110)
    一,js代码:<html><head><metacharset="utf-8"/><title>测试</title></head><body><imgid="img"src=""/><script>//记录开始时间leta=newDate......
  • c++:函数的重载
    一、重载的定义对于同一种功能但是参数不一样的函数,使用重载就可以实现功能相同的函数拥有相同的函数名,在调用函数的时候,通过实参的类型,判断调用哪个函数。【不使用重载......
  • 海象运算符
    海象运算符是python3.8更新之后推出的一个全新的语法一、海象运算符定义海象运算符之所以叫这个名字是因为这个符号就像是一个海象逆时针90°倒过来一样,符号为一个冒号接......
  • 运算符重载 + -
    #include<iostream>usingnamespacestd;classmyComplex{private: doublereal,imag;public: myComplex(); myComplex(doubler,doublei); voidoutCom(); myComplexo......
  • Java运算符拓展
    Java运算符拓展一元运算符//一元运算符:++(自增);--(自减)publicclassDemo01{  publicstaticvoidmain(String[]args){    inta=3;      ......
  • 97:方法没有重载_方法的动态性
    ###方法没有重载在其他语言中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含3个部分:方法名、参数数量、参数类型。Python中,方法的的参数没有声明类型(调......
  • Java基本运算符
    Java基本运算符算术运算符:+,-,*,/,%,++,--赋值运算符:=关系运算符:>,<,>=,<=,==,!=,instanceof(关系运算符返回的结果:正确或错误)逻辑运算符:&&,||,!(与、或、非)......
  • chrome: 保存页面中的canvas为图片(chrome 107.0.5304.110)
    一,得到图片的base641,打开页面后,在当前页面打开开发者工具菜单->更多工具->开发者工具2,在elements页面,找到目标canvas,给它加一个id,如图:  3,在console标签页,输......
  • 1104 Sum of Number Segments
    Givenasequenceofpositivenumbers,asegmentisdefinedtobeaconsecutivesubsequence.Forexample,giventhesequence{0.1,0.2,0.3,0.4},wehave10......
  • 1102 Invert a Binary Tree
    ThefollowingisfromMaxHowell@twitter:Google:90%ofourengineersusethesoftwareyouwrote(Homebrew),butyoucan'tinvertabinarytreeonawhiteboa......