当您执行时
c = a[b],
a.__get_item__会以
b将其作为唯一参数进行调用,并将返回的所有内容分配给
c。
当您执行时
a[b] = c,
a.__setitem__使用
b和
c作为参数调用,并且返回的所有内容都会被静默丢弃。
因此,尽管具有相同的
a[b]语法,但是两个表达式在做的事情都不同。您可以子类化
ndarray,重载这两个函数,并使它们的行为不同。在numpy中,默认情况下,前者返回一个副本(如果
b是数组),但后者会
a在适当位置进行修改。

当您执行时
c = a[b],
a.__get_item__会以
b将其作为唯一参数进行调用,并将返回的所有内容分配给
c。
当您执行时
a[b] = c,
a.__setitem__使用
b和
c作为参数调用,并且返回的所有内容都会被静默丢弃。
因此,尽管具有相同的
a[b]语法,但是两个表达式在做的事情都不同。您可以子类化
ndarray,重载这两个函数,并使它们的行为不同。在numpy中,默认情况下,前者返回一个副本(如果
b是数组),但后者会
a在适当位置进行修改。