我正在创建一个模拟数字类型的类,以便能够在这个类的实例上使用基本的算术运算符,如+
、-
等。但是,我希望能够根据操作数的类型以不同的方式处理该操作。例如,如果我正在创建一个以__add__()
作为函数的类foo_c
,那么我希望能够处理一个操作数是foo_c
类型,而另一个是int
或float
或numpy.ndarray
(或foo_c
)类型的加法情况
我要实现的解决方案是有一个“加法器”函数集合,用于在基于操作数类型的函数之间进行切换。不同的功能分配给字典,例如:
class foo_c:
...
self.addOps = { int: self.addScalar,
float: self.addScalar,
foo_c: self.addFoo }
...
self.addScalar(self, sclr):
...
self.addFoo(self, foo):
...
self.__add__(self, operand):
return self.addOps[type(operand)](operand)
我遇到的问题是,我无法让type()
函数返回适当的值作为字典的键。将类的实例创建为foo = foo_c()
后,内置函数type(foo)
返回instance
,而不是foo_c
。我假设这是因为我没有创建有问题的对象;而是创建对象的实例。我也使用了foo.__class__
,但是得到了__main__.foo_c
作为返回类,这也不对
我不想使用isinstance()
检查行,那么有没有办法让type()
按需要返回类
你忘了让
foo_c
从object
继承,所以你得到了一个老式的类。使其从object
继承:相关问题 更多 >
编程相关推荐