Classes Python: anexando uma lista e incorporando um método

user6142489

Eu comecei a aprender sobre as aulas de Python hoje e tive uma pergunta rápida. Estou muito surpreso com o quão mais sucinto ele tornou meu código, mas estou tentando descobrir se o seguinte é possível para um problema de xadrez no qual estou trabalhando.

(1) Posso acrescentar uma lista de alguma forma a partir de um método de classe? Estou tentando descobrir se há uma maneira de acumular as peças em uma lista cada vez que a captura é chamada.

(2) Como posso chamar um método de dentro da classe para ser usado em outro método? Gostaria de poder verificar se um movimento é válido antes mesmo de prosseguir se a peça deve tentar capturar outro ou movimento.

class Piece(Board):

def __init__(self, piece, r, c):
    self.piece = piece
    self.r = r
    self.c = c

Esta é a função que gostaria de incorporar nas funções abaixo para evitar a redundância (Questão 2)

def valid_move(self,r,c,r_offset,c_offset):
    #r, c are integers for the coordinates on the board
    #r_offset,c_offset are the cells the piece might move to
    self.tgt_r, self.tgt_c = r+r_offset, c+c_offset

    if self.tgt_r <= 7 or self.tgt_c >= 0:
            return True
    return False

Essas funções são as mesmas por enquanto. Estou tentando ver como posso usar a função de captura para acumular uma lista de peças depois de tiradas. (Questão 1)

def capture(self,r,c, r_offset, c_offset): 

    piece = self.piece
    self.tgt_r, self.tgt_c = r+r_offset, c+c_offset 

    if self.tgt_r > 7 or self.tgt_c < 0:
            return None             
    else:
        nb = Board(curr).copy_board() #this board is just 8x8 np.array
        nb[self.tgt_r,self.tgt_c], nb[r,c] = piece,'-'  
    return nb

def move(self,r,c, r_offset, c_offset):

    piece = self.piece
    self.tgt_r, self.tgt_c = r+r_offset, c+c_offset 

    if self.tgt_r > 7 or self.tgt_c < 0:
        return None
    else:
        nb = Board(curr).copy_board()
        nb[self.tgt_r,self.tgt_c], nb[r,c] = piece,'-'  
    return nb

Obrigado como sempre.

Ashish Ranjan

1. Posso acrescentar uma lista de algum método de classe?

crie um list- piecesListem sua classe para armazenar as peças:

class Piece(Board):
    def __init__(self, piece, r, c):
        self.piece = piece
        self.r = r
        self.c = c
        self.piecesList = [] #or init using some argument if you want to use some list from outside of the class

e sempre que seu capturemétodo for chamado, simplesmente anexe a parte no piecesList:

def capture(self,r,c, r_offset, c_offset): 
    self.piecesList.append(self.piece)
    piece = self.piece

2. Como posso chamar um método de dentro da classe para ser usado em outro método?

você pode simplesmente chamá-lo usando self.method(arg1, arg2...):

def capture(self,r,c, r_offset, c_offset): 

    piece = self.piece

    if self.valid_move(r,c,r_offset,c_offset) == False:
            return None             
    else:
        nb = Board(curr).copy_board() #this board is just 8x8 np.array
        nb[self.tgt_r,self.tgt_c], nb[r,c] = piece,'-'  
    return nb

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Raspador da Wikipedia Encontrando uma lista de artigos e anexando-os a um dataframe Python

Anexando um dicionário a uma lista em um loop Python

Anexando a uma lista vazia - Python

Python anexando uma lista a um dicionário. A lista é dividida em caracteres individuais em vez do todo

Anexando a uma Lista R, um por um

Anexando uma lista a outra lista em python

Anexando um valor de uma lista a uma lista vazia em python

Anexando uma lista em um loop (R)

Anexando um item de uma lista a outra

Anexando um char a uma lista vazia

Anexando um char a uma lista vazia

Python - anexando a uma lista em conserva

Recursão em python - anexando a uma lista

Python: anexando dicionários a uma lista

python: anexando um dicionário a uma lista - vejo um ponteiro como o comportamento

Python 2.7: anexando a um valor de lista de uma chave de dicionário

Beautifulsoup + segmentação Python HTML UL, criando uma lista e anexando às variáveis

Python 3: Dict compreensão com if else e anexando a uma lista

Beautifulsoup + segmentação Python HTML UL, criando uma lista e anexando às variáveis

Anexando a uma lista dentro de um fluxo a um mapa

Limpar - anexando a uma lista

Limpar - anexando a uma lista

Anexando uma lista

Incorporando uma imagem em um e-mail com PHP

Converta um loop for aninhado com uma chamada de função e anexando dados a uma compreensão de lista

Não é possível criar um array numpy usando o método `full ()` de numpy e uma lista python

Como obter uma lista de classes e funções de um arquivo Python sem importá-lo

Python anexando a uma sublista em uma lista de listas

Python - anexando uma coluna a uma lista de DataFrames

TOP lista

quentelabel

Arquivo