运算符and和语句重载

时间:2019-04-19 04:00:13

标签: python-3.x operators

我不了解程序中“ ”和“ ”语句的工作情况。帮助我了解其正常工作。

class A:
    def __init__(self,a):
        self.a=a
    def show(self):
        print(self.a)

class B(A):
    def __init__(self,b):
        self.a=b
    def __str__(self):
        return "({0})".format(self.a)
    def __add__(self,other):
        return self.a+other.a

E=B("Tony")
R=B("Stark")

print(E or R)
print(E and R)
print(E+R)

1 个答案:

答案 0 :(得分:0)

您的类实质上代表字符串Code GenerationTony

对于运算符,将评估第一个值,如果其值为True,则将其打印出来,否则我们将移至第二个值并对其进行评估并打印

在下面的示例中,第一个字符串的计算结果为True,因为Stark的计算结果始终为True

bool(string)

但是如果您有In [15]: bool('Tony') Out[15]: True In [17]: bool('Stark') Out[17]: True In [12]: 'Tony' or 'Stark' Out[12]: 'Tony' In [14]: 'Stark' or 'Tony' Out[14]: 'Stark' 的评估结果为False,我们将看到不同的结果。

None

对于运算符,仅当两个值均为true时,该值才被评估为true并选择第二个值

In [23]: bool(None)                                                                                   
Out[23]: False
In [21]: 'Stark' or None                                                                              
Out[21]: 'Stark'
In [22]: 'Tony' or None                                                                               
Out[22]: 'Tony'
In [18]: None or 'Tony'                                                                               
Out[18]: 'Tony'
In [20]: None or 'Stark'                                                                              
Out[20]: 'Stark'

但是如果其中之一评估为False,则不会显示任何值。

In [24]: 'Tony' and 'Stark'                                                                           
Out[24]: 'Stark'
In [25]: 'Stark' and 'Tony'                                                                           
Out[25]: 'Tony'