Python扩充作业问题

Python扩充作业问题,第1张

Python扩充作业问题

对于

+
*** 作员,Python定义了对象可以实现的三种“特殊”方法

  • __add__
    添加两项(
    +
    运算符)。当您执行时
    a + b
    ,的
    __add__
    方法
    a
    将以
    b
    作为参数进行调用。
  • __radd__
    :反映添加;对于
    a + b
    ,的
    __radd__
    方法
    b
    a
    作为实例调用。仅当
    a
    不知道如何添加并且两个对象是不同类型时才使用。
  • __iadd__
    :就地添加;用于
    a += b
    将结果分配回左变量的位置。这是单独提供的,因为有可能以更有效的方式实现它。例如,如果
    a
    是列表,则
    a += b
    与相同
    a.extend(b)
    。但是,在这种情况下,
    c = a + b
    您必须先复制的副本,
    a
    然后再进行扩展,因为
    a
    在这种情况下不会进行修改。请注意,如果您未实现,
    __iadd__
    则Python只会调用
    __add__

因此,由于这些不同的 *** 作是通过单独的方法实现的,因此有可能(但通常是不好的做法)实现它们,以使它们执行完全不同的 *** 作,或者在这种情况下,仅执行 略有
不同的 *** 作。

其他人推论您正在使用NumPy并解释了其行为。但是,您询问了底层实现。希望您现在明白 为什么 有时情况与情况

a += b
不同
a = a +b
。顺便说一下,也可以为其他 *** 作实现类似的三重方法。请参阅此页面以获取所有受支持的就地方法的列表。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5655327.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存