python中的运算符重载

发布于 2021-01-29 19:37:16

是否可以在Python中重载运算符?如果是这样,可以定义新的运算符,例如++<<吗?

关注者
0
被浏览
301
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    正如其他答案所提到的,您确实可以重载运算符(通过在正在编写的类中定义特殊方法,即名称以两个下划线开头和结尾的方法)。所有的细节都在这里

    要完成对您问题的回答:您不能定义新的运算符;但是<<它不是一个新的运算符,它是一个现有的运算符,并且通过在类中定义method来使其过载__lshift__

    作为历史记录,这在C 中几乎也是这种情况-但是,您可以重载的运算符的确切集合在两种语言之间有所不同。例如,在C

    中,您不能重载属性访问.;在Python中,您可以使用__getattr__(或__getattribute__使用不同的语义)和__setattr__。反之亦然,在Python
    =(普通赋值)中,它不是运算符,因此您不能重载它,而在C ++中,它是运算符,您可以重载它。

    <<是一种运算符,并且在两种语言中都可以重载,这就是<<and的方式>>,同时又不失去其左右移的初始含义,同时也成为了C ++中的I /O格式化运算符(不是Python!-)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看