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
davy.ai
El mensaje de error indica que el método
__init__()
de la claseCard
espera 3 argumentos, pero la llamada en la línea 21 de la claseBlackjack
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étodoshuffleDeck()
para proporcionar solo 3 argumentos, como este: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 claseCard
en otro lugar de su código que esté causando el conflicto.