Python中物件布林值的計算

2022-07-23 03:24:18 字數 2541 閱讀 2099

每個物件都可以在布林上下中被計算,如ifwhile語句。下面示例將演示物件是truefalse的規則。

class foo():

pass

foo = foo()

if foo:

print("it's true")

else:

print("well, it's false")

如果物件有__bool__方法,__bool__()決定物件的正確性。需要注意的是,python期望__bool__()返回乙個布林值,否則會丟擲異常typeerror

class foo:

def __init__(self, cnt_true):

self.cnt_true = cnt_true

def __bool__(self):

print('__bool__: cnt_true = ' + str(self.cnt_true))

self.cnt_true -= 1

return self.cnt_true >= 0

foo = foo(4)

while foo:

print('still in loop')

print("loop exited")

# __bool__: cnt_true = 4

# still in loop

# __bool__: cnt_true = 3

# still in loop

# __bool__: cnt_true = 2

# still in loop

# __bool__: cnt_true = 1

# still in loop

# __bool__: cnt_true = 0

# loop exited

如果物件沒有__bool__()方法,而有__len__()方法,__len__()的返回值決定了物件的正確性。如果返回值為0,物件就是false,否則就是true.需要注意的是,python期望__len__()返回乙個整型。

class foo:

def __init__(self, cnt_true):

self.cnt_true = cnt_true

def __len__(self):

print("__len__: cnt_true = " + str(self.cnt_true))

self.cnt_true -= 1

return self.cnt_true

foo = foo(4)

while foo:

print('still in loop')

print("loop exited")

# __len__: cnt_true = 4

# still in loop

# __len__: cnt_true = 3

# still in loop

# __len__: cnt_true = 2

# still in loop

# __len__: cnt_true = 1

# loop exited

class foo:

def __init__(self, cnt_true):

self.cnt_true = cnt_true

def __bool__(self):

print('__bool__: cnt_true = ' + str(self.cnt_true))

self.cnt_true -= 1

return self.cnt_true >= 0

def __len__(self):

print("__len__: cnt_true = " + str(self.cnt_true))

self.cnt_true -= 1

return self.cnt_true

foo = foo(4)

while foo:

print('still in loop')

print("loop exited")

# __bool__: cnt_true = 4

# still in loop

# __bool__: cnt_true = 3

# still in loop

# __bool__: cnt_true = 2

# still in loop

# __bool__: cnt_true = 1

# still in loop

# __bool__: cnt_true = 0

# loop exited

物件的布林值

python一切皆物件,所有物件都有乙個布林值 變數也是物件 獲取物件的布林值,使用內建函式bool 來獲取物件的布林值 以下物件的布林值位false false 數值0none 空字串 空列表空元組 空字典空集合 一切空的物件bool值都是false example print bool fals...

objc 中的布林值

1.bool bool,在c語言中是沒有定義的,objective c中有bool是因為它使用的編譯器能識別這樣的資料型別,被解釋為int型。2.bool bool,在objc中是用來做真假判斷的,多用於物件。3.boolean boolean 是乙個舊的carbon 關鍵字,他的資料型別是unsi...

python筆記4 布林值

布林值 空值 布林值只有兩種 true還有false,分別代表真與假 true false的首字母大寫,其他小寫,這是固定寫法 布林值長這樣 true false大多數時候,布林值並不會直接出現在 中 更多時候以這三種形式活躍在你的 裡 1 第一種情況 兩個數值在互相比較時 2 第二種使用情況 數值...