es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python: Pygame Error de tipo de dato al intentar pasar “self” como objeto a un constructor separado.

Sé muy poco, por lo que discúlpenme si me equivoco en la redacción o en la forma de expresarme. He estado programando durante aproximadamente 2 semanas y estoy tratando de pasar la pantalla del objeto Blackjack al constructor Card para que compartan la misma pantalla. Sin embargo, cuando lo hago, obtengo un TypeError que dice que estoy usando un argumento más de lo permitido. Aquí está mi código:

class Blackjack:
    def __init__(self):
        pygame.init()
        self.deck = []
        self.player = []
        self.dealer = []
        self.settings = Settings()
        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height)
        )
        pygame.display.set_caption("Blackjack")

def shuffleDeck(self):
    for i in range(6):
        for j in range(4):
            for k in range(13):
                self.deck.append(Card(j,k,self.screen)) # <-- Error aquí
    random.shuffle(self.deck)

class Card:
    def __init__(self,suit,face,screen):
        self.screen = screen
        self.suit = int(suit)
        self.face = int(face)
        self.image = pygame.image.load("images/cards/" + self.filePrint() + ".png")
        self.rect = self.image.get_rect()

Traceback (most recent call last):

File “c:\users\keff\documents\python\blackjack2.py”, line 34, in
bj.mainGame()
File “c:\users\keff\documents\python\blackjack2.py”, line 28, in mainGame
bj.shuffleDeck()
File “c:\users\keff\documents\python\blackjack2.py”, line 21, in shuffleDeck
self.deck.append(Card(j,k,self.screen))
TypeError: init() takes 3 positional arguments but 4 were given

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el método __init__() de la clase Card espera 3 argumentos, pero la llamada en la línea 21 de la clase Blackjack proporciona 4 argumentos.

    Para solucionar este problema, es posible que necesite verificar la definición de la clase Card y asegurarse de que solo espera 3 argumentos. Si ese es el caso, puede modificar la llamada al constructor en el método shuffleDeck() para proporcionar solo 3 argumentos, como este:

    self.deck.append(Card(j, k, self.screen))
    

    Si aún obtiene el mismo error después de realizar este cambio, puede haber un problema con la definición de la clase Card que debe resolverse. También es posible que tenga otra versión de la clase Card en otro lugar de su código que esté causando el conflicto.

Comments are closed.