Python QuerySet对象和或运算符

时间:2018-10-18 09:45:21

标签: python django list

我是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 :(得分:0)

您可以按照here所述,通过实施特殊的pandas方法(也可能是__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

使用各种特殊功能类似地实现其他运算符。