Python QuerySet объект и или оператор - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в python и нашел несколько списков объектов при использовании запросов djnago, таких как

 querysetObj = <QuerySet [<class: obj1>, <class: obj2>]>
 queryset=<QuerySet [<class: obj1>, <class: obj3>,<class:obj4>]>
 for obj in querysetObj:
   queryset|=obj 
 queryset=<QuerySet [<class: obj1>, <class: obj3>,<class:obj4>,<class:obj2]>#it acts like a set compare objects and add none repeated objects only 

Я хочу знать, как сделать тот же дизайн с другими объектами "мои собственные классы", это связано?перегрузке операторов как c ++ и если да, то как это сделать?

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете сделать это путем реализации специального метода __or__ (и, возможно, также __ror__), как описано здесь .

class Foo:
    def __or__(self, other):
        return "Orred Foo"
    def __ror__(self, other):
        return "Rorred Foo"

Foo() | Foo()
# => 'Orred Foo'
Foo() | 7
# => 'Orred Foo'
7 | Foo()
# => 'Rorred Foo'

Если левый операнд имеет __or__ определено, вызывается метод __or__.Если это не так или __or__ бросил NotImplemented, то вызывается правый операнд __ror__.

Другие операторы реализованы аналогичным образом, используя различные специальные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...