簡體   English   中英

如何修復 TypeError: __init__() 缺少 1 個必需的位置參數:'y'

[英]How do I fix TypeError: __init__() missing 1 required positional argument: 'y'

我目前正在嘗試為我的角色設置碰撞箱,但我似乎無法擺脫這個錯誤。

class Player(pygame.sprite.Sprite):
    def __init__(self, x, y):
        self.x = x
        self.y = y
        pygame.sprite.Sprite.__init__(self)
        self.image = IronMan
        self.rect = self.image.get_rect()
        self.rect.y = 475
        self.direction = 1
        self.hitbox = (self.x + 20, self.y + 11, 28, 60)

    def draw(self, win):
        self.hitbox = (self.x + 20, self.y + 11, 28, 60)
        pygame.draw.rect(win, (255, 0, 0), self.hitbox, 2)
                       

當代碼運行時,我面臨

TypeError: __init__() missing 1 required positional argument: 'y'

看起來您在創建類的實例時沒有提供足夠的參數。 有 2 個選項可以修復它。

  1. 創建實例時提供足夠的參數。

例子:

Mark = Player() # Error
Cindy = Player(1) # Error
James = Player(1, 2) # Good!

由於您指定 _ init _ 方法接受 2 個參數,因此在調用它時必須提供 2 個參數。

  1. 只需為參數設置一個默認值。 您可以通過使用“=”符號來做到這一點。

例子:

def __init__(self, x=0, y=0):
    #blabla

現在, _ init _ 方法將自動將參數初始化為 0,如果它不是手動提供的。

Mark = Player() # Mark.x=0, Mark.y=0
Cindy = Player(1) # Cindy.x=1, Cindy.y=0
James = Player(1, 2) # James.x=1, James.y=2

暫無
暫無

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

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