相关疑难解决方法(0)

覆盖自定义类的bool()

所有我想要的是bool(myInstance)返回False(并且myInstance在条件中评估为False,如if /或/和.我知道如何覆盖>,<,=)

我试过这个:

class test:
    def __bool__(self):
        return False

myInst = test()
print bool(myInst) #prints "True"
print myInst.__bool__() #prints "False"
Run Code Online (Sandbox Code Playgroud)

有什么建议?

(我使用的是Python 2.6)

python casting boolean class python-2.x

50
推荐指数
4
解决办法
2万
查看次数

如何重载Python的__bool__方法?

可能重复:
在python中定义类的"boolness"

我认为这应该打印"False",为什么打印"True"?

>>> class Foo(object):
...   def __bool__(self):
...     return False
... 
>>> f = Foo()
>>> if f:
...   print "True"
... else:
...   print "False"
... 
True
>>>
Run Code Online (Sandbox Code Playgroud)

python methods overloading magic-methods

45
推荐指数
1
解决办法
1万
查看次数

Python中对象的布尔值

我们知道,Python有对象的布尔值:如果一个类有一个__len__方法,它的每个实例__len__()都会返回0,它将被计算为一个布尔值False(例如,空列表).

实际上,每个可迭代的空自定义对象都被评估为False好像它出现在布尔表达式中.

现在假设我有一个foo属性类bar.我怎样才能定义它的真值,以便它会被评估True if bar % 2 == 0,False否则呢?

例如:

myfoo = foo()
myfoo.bar = 3
def a(myfoo):
    if foo:
        print "spam"
    else:
        print "eggs"
Run Code Online (Sandbox Code Playgroud)

所以,a(myfoo)应该打印"eggs".

python boolean

34
推荐指数
2
解决办法
2万
查看次数

在Python中分配类布尔值

如果Python中的语句允许您执行以下操作:

   if not x:
       print "X is false."
Run Code Online (Sandbox Code Playgroud)

如果您使用空列表,空字典,无,0等,这可以工作,但如果您有自己的自定义类怎么办?你能为该类分配一个假值,以便在相同的条件样式中,它将返回false吗?

python class conditional-statements

16
推荐指数
2
解决办法
7553
查看次数

返回变量的真实性而不是它的值?

考虑以下代码:

test_string = 'not empty'

if test_string:
    return True
else:
    return False
Run Code Online (Sandbox Code Playgroud)

我知道我可以构造一个条件表达式来做到这一点:

return True if test_string else False
Run Code Online (Sandbox Code Playgroud)

但是,当我宁愿返回布尔值时,我不喜欢测试布尔值是真还是假.我怎么才能恢复它的真实性?

python string boolean truthiness

5
推荐指数
1
解决办法
278
查看次数

如何打印变量的真值?

在Python中,变量具有基于其内容的真值.例如:

>>> def a(x):
...     if x:
...         print (True)
... 
>>> a('')
>>> a(0)
>>> a('a')
True
>>> 
>>> a([])
>>> a([1])
True
>>> a([None])
True
>>> a([0])
True
Run Code Online (Sandbox Code Playgroud)

我也知道我可以在没有if运算符的情况下打印比较的真值:

>>> print (1==1)
True
>>> print (1<5)
True
>>> print (5<1)
False
Run Code Online (Sandbox Code Playgroud)

但是如何打印变量的True/ False值?目前,我这样做:

print (not not a)
Run Code Online (Sandbox Code Playgroud)

但这看起来有点不雅观.有首选方式吗?

python boolean python-3.x output

3
推荐指数
1
解决办法
1852
查看次数

深入挖掘python if语句

这可能是一个非常愚蠢的问题,但我无法在其他任何地方找到答案,我已经看过了,但是我找不到与我的问题相关的任何内容。

题:

在python中,不知道其他语言,每当我们为内置类调用if语句时,它都会返回if语句解释的内容,例如,

a = 0
if a: print("Hello World")
Run Code Online (Sandbox Code Playgroud)

作为上述语句不打印任何东西if aFalse。现在返回的是哪个方法False,或者是否有 if 语句调用的方法来知道它?

或者更准确地说,if 语句如何在更深层次的 Python 中工作?

python python-2.x python-3.x

2
推荐指数
1
解决办法
58
查看次数