让我们说:
班级酒吧: 通过A = Bar()
A: 打印( “富”!)然后在A上调用什么操作来确定while循环?
我已经尝试了__eq__,但这并没有做太多。
除非您定义自定义,否则用户定义的对象是真实的 __bool__ :
__bool__
>>> class A: ... pass ... >>> a = A() >>> if a: print(1) ... 1 >>> class B: ... def __bool__(self): ... return False ... >>> b = B() >>> if b: print(1) ... >>>
可以调用不同的方法来确定对象是否进行求值 True 要么 False 。
True
False
如果一个 __bool__ -method被定义,这被称为,否则,如果 __len__ 定义,其结果进行比较 0 。
__len__
0
该 while 声明 由...组成 while 关键字后跟表达式。
while
当一个 表达式用于控制流语句中 通过调用对象来评估该表达式的真值 __bool__ 方法:
在布尔运算的上下文中,和 当控制流语句使用表达式时也是如此 ,以下值被解释为false: False , None ,所有类型的数字零,以及空字符串和容器(包括字符串,元组,列表,字典,集合和frozensets)。 所有其他值都被解释为true。 用户定义的对象可以通过提供a来自定义其真值 __bool__() 方法。
None
__bool__()
总之,结果取决于什么 __bool__ 你的对象返回;因为你没有指定一个,默认值为 True 用来。