如何判断python中是否存在可选参数

时间:2016-04-25 21:39:55

标签: python class boolean

class Dimensional:
    def __init__(self, gravity, l=0, m=0, t=0):
        assert type(l) == int
        assert type(m) == int
        assert type(t) == int

        self.gravity = gravity
        self.l = l
        self.m = m
        self.t = t

我试图定义一个__bool__方法,该方法对任何非零值都返回True 我做了什么:

def __bool__(self): 
    g = self.gravity
    _l = self.l
    _m = self.m
    _t = self.t
    if not self.gravity:
        g += 1
    if not self.l:
        _l += 1
    if not self.m:
        _m += 1
    if not self.t:
        _t += 1

    if g != 0 and _l != 0 and _m != 0 and _t != 0:
        return True
    else:
        return False

1 个答案:

答案 0 :(得分:0)

只需在所有属性上返回or表达式的布尔转换:

def __bool__(self): 
    return bool(self.gravity or self.l or self.m or self.t)

如果这些值中的任何值不为0,则bool()将生成True,否则它将生成False

您的代码始终返回True,无论如何;对于0递增变量的任何字段;所以你的4个局部变量都以非零值结束,保证。

使用上述方法进行演示:

>>> bool(Dimensional(0,1,1,1))
True
>>> bool(Dimensional(0,0,0,0))
False

请注意,如果您使用的是Python 2,则需要将方法命名为__nonzero__(); __bool__是Python 3的名称。