2016-07-24 3 views
0

Я искал поиски каких-либо вариантов использования или примеров этих методов, но не смог найти подробного объяснения, они просто перечислены вместе с другими подобными методами. Фактически, я просматривал какой-то код на github и натыкался на эти методы, но не мог понять его использования. Может кто-нибудь, пожалуйста, дайте подробное объяснение этих методов. Это звено GitHub кода, где я наткнулся на них: https://github.com/msiemens/tinydb/blob/master/tinydb/queries.pyКак и где использовать правильные методы магии __and__, __or__, __invert__ Python

ответ

4

Магические методы __and__, __or__ и __invert__ используются для переопределения операторов a & b, a | b и ~a соответственно. То есть, если у нас есть класс

class QueryImpl(object): 
    def __and__(self, other): 
     return ... 

затем

a = QueryImpl(...) 
b = QueryImpl(...) 
c = a & b 

эквивалентно

a = QueryImpl(...) 
b = QueryImpl(...) 
c = a.__and__(b) 

Эти методы переопределены в tinydb поддерживать этот синтаксис:

>>> db.find(where('field1').exists() & where('field2') == 5) 
>>> db.find(where('field1').exists() | where('field2') == 5) 
#         ^

Посмотрите еще: