簡體   English   中英

Python-對象的類型檢查實例

[英]Python - Type Checking Instances of Objects

我正在創建一個模擬數值類型的類,以便能夠在該類的實例上使用基本的算術運算符,例如+-等。 但是,我希望能夠根據操作數的類型以不同的方式處理操作。 例如,如果我使用__add__()作為函數創建一個foo_c類,那么我希望能夠處理一個操作數為foo_c類型而另一個操作數為intfloatnumpy.ndarray類型的numpy.ndarrayfoo_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_cobject繼承,所以您得到的是舊式類。 使它繼承自object

class foo_c(object):
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM