我是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 ++这样的运算符重载有关,如果这样,该如何执行?
答案 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
。
使用各种特殊功能类似地实现其他运算符。