Python类型检查对象实例

2024-09-28 05:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个模拟数字类型的类,以便能够在这个类的实例上使用基本的算术运算符,如+-等。但是,我希望能够根据操作数的类型以不同的方式处理该操作。例如,如果我正在创建一个以__add__()作为函数的类foo_c,那么我希望能够处理一个操作数是foo_c类型,而另一个是intfloatnumpy.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()按需要返回类


Tags: 实例函数selfadd类型字典footype

热门问题