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.

Cómo comprobar parámetro y luego definir atributo en una clase de Python.

Tengo una clase Queue como se muestra a continuación. En esta clase, si no se especifica la capacidad de transmisión, se establecerá isLimit en falso y viceversa. No sé si hay una forma más eficiente.

class Queue():
    def __init__(self, capacity=None):
        self._queue = list()
        if(capacity == None):
            self.isLimit = False
        else:
            self.isLimit = True
            self.capacity = capacity
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La clase Queue ha sido definida pero la declaración if-else en su método __init__ establece su atributo isLimit dependiendo de si el parámetro capacity es None o no. ¿Cuál es el propósito de esta declaración if-else y hay una manera más eficiente de lograr la misma funcionalidad?

    La declaración if-else en el método __init__ de la clase Queue se utiliza para establecer el atributo isLimit en False si el parámetro capacity es None y True en caso contrario. Esto se debe a que la clase necesita seguir el control de si se ha establecido un límite en el número de elementos que se pueden agregar a la cola (isLimit se establece en True si la capacidad no es None).

    Una forma de hacer el código más eficiente podría ser usar un valor predeterminado para el parámetro capacity de __init__. Por ejemplo:

    class Queue():
        def __init__(self, capacity=None):
            self._queue = list()
            self.isLimit = capacity is not None
            self.capacity = capacity if capacity is not None else float('inf')
    

    Aquí, establecemos isLimit en True si capacity no es None, y establecemos el atributo capacity en infinito si no se proporciona capacity. De esta manera, evitamos la declaración if-else y hacemos el código más conciso.

Comments are closed.