有一个代码和类'方法有一行:
object.attribute |= variable
我无法理解它的含义。我没有在基本Python运算符列表中找到(| =)。
答案 0 :(得分:18)
答案 1 :(得分:7)
在python中,|
是调用对象的__or__
方法的简称,如here in the docs和此代码示例所示:
class Object(object):
def __or__(self, other):
print("Using __or__")
让我们看看使用|
运算符与此通用对象时会发生什么。
In [62]: o = Object()
In [63]: o | o
using __or__
正如您所看到的,调用了__or__
方法。 int
,'设置',' bool'所有人都有__or__
的实施。对于数字和bool,它是一个按位OR。对于集合,它是一个联盟。因此,根据属性或变量的类型,行为将有所不同。许多按位运算符都设置了等价物see more here。
答案 2 :(得分:4)
我应该添加" bar-equals"现在(在2018年)最常用作set-union运算符,如果它们尚未存在,则将元素附加到集合中。
>>> a = {'a', 'b'}
>>> a
set(['a', 'b'])
>>> b = {'b', 'c'}
>>> b
set(['c', 'b'])
>>> a |= b
>>> a
set(['a', 'c', 'b'])
例如,在自然语言处理中,一个用例就是提取多种语言的组合字母:
alphabet |= {unigram for unigram in texts['en']}
alphabet |= {unigram for unigram in texts['de']}
...
答案 3 :(得分:0)
对于一个整数,这将对应于Python"按位或"方法。所以在下面的例子中我们采用bitwise或4和1得到5(或二进制100 | 001 = 101):
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 4
>>> bin(a)
'0b100'
>>> a |= 1
>>> bin(a)
'0b101'
>>> a
5
更一般化(正如亚历杭德罗所说)是调用对象的或方法,可以为以下形式的类定义:
def __or__(self, other):
# your logic here
pass
因此,在整数的特定情况下,我们调用或方法,该方法解析为按位或按Python定义。