[英]TypeError: object() takes no parameters after defining __new__
[英]__new__ = TypeError: object() takes no parameters
我希望我的類能夠自己創建對象,我看到這可能是' new ',但顯然它不起作用,因為我收到此錯誤:
TypeError : object()不帶參數
所以有我正在使用的類,我會發布所有這些,以防它可能來自代碼的另一部分。
class Planete:
def __new__(cls, rayon, periode, envergure,look):
print("test __new__ of the class {}".format(cls))
return object.__new__(cls, rayon, periode, envergure,look)
def __init__(self,rayon,periode,envergure,look):
self.rayon = rayon
self.periode = periode
#self.couleur = couleur
self.envergure = envergure
self.omega = (2*math.pi)/self.periode
self.i = 0
self.look = pygame.transform.rotozoom(look,0,self.envergure)
self.rect = pygame.Rect((0, 0), (0, 0))
#self.surf = pygame.Surface(self.rect.size)
def tourner(self) :
self.x = self.rayon*math.cos(self.omega*self.i)
self.x2 = int(self.x)+600
self.y = self.rayon*math.sin(self.omega*self.i)
self.y2 = int(self.y)+300
self.i = self.i + 1
self.rect = pygame.Rect((self.x2, self.y2), (50, 50))
def dessiner(self):
#pygame.draw.circle(gameDisplay,(self.couleur),((self.x2, self.y2)), self.envergure)
#gameDisplay.blit(self.surf,self)
gameDisplay.blit(self.look,(self.x2, self.y2))
問題正是錯誤消息所說的: TypeError: object() takes no parameters
在你的__new__
方法中,你調用object.__new__(cls, rayon, periode, envergure,look)
,這是(與cls
參數有關) object(rayon, periode, envergure, look)
。
直接修復是用以下內容替換該行:
return object.__new__(cls)
但無論如何,正如你在評論中所說,你沒有真正的理由在這里使用__new__
:從Python語言參考中提取:
new ()主要用於允許不可變類型的子類(如int,str或tuple)自定義實例創建。
由於您的Planete
類不是不可變類型,並且當您使用__init__
進行自定義時,您根本不應該使用__new__
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.