【问题标题】:operator overloading with and or statements使用 and or 语句重载运算符
【发布时间】:2019-04-19 04:00:12
【问题描述】:

我不明白“and”和“or”语句在程序中的运行情况。帮助我了解它的正常工作。

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)

【问题讨论】:

  • 你没有得到什么?
  • 检查我的解释是否对你有意义

标签: python-3.x operators


【解决方案1】:

您的类本质上代表字符串TonyStark

对于 or 运算符,第一个值被计算,如果计算为 True,则打印,否则我们移动到第二个值并计算它,并打印它

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

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'

但如果您的 None 的计算结果为 False,我们将看到不同的结果。

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'

对于 and 运算符,只有当两个值都为真时,才会将该值评估为真并选取第二个值

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

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

In [31]: 'Stark' and None                                                                             
In [32]: 'Tony' and None                                                                              
In [33]: None and 'Tony'                                                                              In [34]: None and 'Stark' 

【讨论】:

  • 感谢您的帮助.. 它真的让我理解了 and , or 语句的工作原理
  • 很高兴为您提供帮助 :) 如果对您有帮助,请接受并支持我的回答 :)
猜你喜欢
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
相关资源
最近更新 更多