[英]When are the first Python objects 'object' and 'type' instances created?
[英]Python - Type Checking Instances of Objects
我正在創建一個模擬數值類型的類,以便能夠在該類的實例上使用基本的算術運算符,例如+
, -
等。 但是,我希望能夠根據操作數的類型以不同的方式處理操作。 例如,如果我使用__add__()
作為函數創建一個foo_c
類,那么我希望能夠處理一個操作數為foo_c
類型而另一個操作數為int
或float
或numpy.ndarray
類型的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
:
class foo_c(object):
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.