Python sqlalchemy重新定义运算符

Python sqlalchemy重新定义运算符,python,sqlalchemy,Python,Sqlalchemy,我试图从sqlalchemy中的String派生一个类MyFraction,并重写操作符,使字符串像分数一样排序 下面的代码失败了(我知道self是comparator工厂),但我不确定如何让它工作: from sqlalchemy import Column, Integer, String from fractions import Fraction class MyFraction(String): class comparator_factory(String.Comparator

我试图从sqlalchemy中的String派生一个类MyFraction,并重写操作符,使字符串像分数一样排序

下面的代码失败了(我知道self是comparator工厂),但我不确定如何让它工作:

from sqlalchemy import Column, Integer, String
from fractions import Fraction

class MyFraction(String):
  class comparator_factory(String.Comparator):
    def __eq__(self, other) :
      return Fraction(self) == Fraction(other)
    def __ne__(self, other) :
      return Fraction(self) != Fraction(other)
    def __gt__(self, other) :
      return Fraction(self) > Fraction(other)
    def __lt__(self, other) :
      return Fraction(self) < Fraction(other)
来自sqlalchemy导入列,整数,字符串
从分数进口分数
类别MyFraction(字符串):
类比较器工厂(字符串比较器):
定义(自身、其他):
返回分数(自身)=分数(其他)
定义(自身、其他):
返回分数(自身)!=分数(其他)
定义(自身、其他):
返回分数(自身)>分数(其他)
定义(自身、其他):
返回分数(自身)<分数(其他)

从sqlalchemy()的文档中,很难知道应该如何做到这一点(有一个叫做“goofy”的操作,但我很难理解它与上述问题的关系)。

找到了我自己问题的答案。SQLAlchemy将这些指令发送到一些sql后端,因此它们直接处理后端中的值(在本例中为字符串)的表示。重新定义相等操作时,可以强制
other
为分数中的字符串,然后在字符串之间执行sql相等操作。但是,比较器本身并不执行操作