Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “的区别是什么?”__以及";及__兰特;在课堂上?_Python_Python 3.x_Set - Fatal编程技术网

Python “的区别是什么?”__以及";及__兰特;在课堂上?

Python “的区别是什么?”__以及";及__兰特;在课堂上?,python,python-3.x,set,Python,Python 3.x,Set,我读了卢西亚诺·拉马略的《流畅的Python》一书。在对classset的描述中,他写道: s & z # s.__and__(z) - intersection of s and z z & s # s.__rand__(z) - inversion operator & 我不明白。为什么在第二种情况下他不写:z.\uuu和(s)。作者说:“s和z的交点”!=“反转运算符&” \u和和\uu和是否等于集合() 我不明白。为什么在第二种情况下他不写: z

我读了卢西亚诺·拉马略的《流畅的Python》一书。在对class
set
的描述中,他写道:

s & z   # s.__and__(z)   - intersection of s and z
z & s   # s.__rand__(z)   - inversion operator &
我不明白。为什么在第二种情况下他不写:
z.\uuu和(s)
。作者说:“s和z的交点”!=“反转运算符&”

\u和
\uu和
是否等于
集合()

我不明白。为什么在第二种情况下他不写:
z.\uuuu rand\uuuu(s)

因为这正是反向运算符的要点。它们也以
\uuuu radd\uuuu
\uuuu rsub\uuuu
等形式存在

如果在执行
a&b
时,调用
a.\uu和
不存在或返回
NotImplemented
,它会尝试(作为“最后手段”)调用
b.\uu和

有关详细信息,请参阅


在您的示例中,
z
类可能没有实现
\uu和
,因此它返回到提供
\uu和
s
,假设作者特别试图解释
s
的方法,而不是
z
的方法,第二个示例使用
s.\uuu rand\uuuu
,因为
s
位于
&
操作符的右侧。如果
z
没有
\uu和
方法,或者它返回
NotImplemented
,那么并且只有那时才调用
s.\uu rand\uuz
(除了在这种情况下可能根本不会调用它,因为
set
是用C编写的内部类型)。