は、私はいくつかのテストを行っている:レコードセットがbool()
にキャストされた場合一部のオペレータがOdooのレコードセットで期待通りに動作しない理由を教えてください。
>>> empty_recordset = self.env['res.users'] # empty recordset
>>> not_empty_recordset = self.env['res.users'].search([('id', '=', 1)]) # recordset with one record
>>> empty_recordset is False
False
>>> empty_recordset is None
False
>>> empty_recordset == False
False
>>> empty_recordset == True
False
>>> bool(empty_recordset)
False
>>> not empty_recordset
True
>>> if empty_recordset: # it is treated as False
... print('hello')
...
>>> bool(not_empty_recordset)
True
>>> if not_empty_recordset:
... print('hello')
...
hello
>>> not not_empty_recordset
False
- それは
True
またはFalse
返します。 if
およびnot
ステートメントでは、結果も期待されます。- オペレータ
is
、==
、!=
と一緒に使用した場合、結果は期待できません。
何が起こっているのですか?レコードセットは、if
とnot
ステートメントでのみブール値として扱われますか?残りの演算子はオーバーロードされていませんか?