método de la clase con una función de función de entrada (Python)

Jacobiman:

Tengo que después del ejercicio:

Implementar un PersonReader clase apoyar los métodos siguientes:

de entrada () solicita al usuario el nombre y el año de nacimiento de una persona en el intérprete de comandos (usando la función de entrada incorporado).

str que devuelve el "nombre (año)" cadena (por ejemplo, para ser utilizado por el método de impresión cuando se aplica a un PersonReader).

Y mi idea era hacer algo como esto:

class Personreader:

    def __init__(self, name, year): 
        self.name = name
        self.year = year

    def from_input(x): 
        return x(input(),input())

    def __str__(self):
        print(self.name, self.year)

Sin embargo, esto da un error cuando intento llamada Personreader.from_input (x) o Personreader.from_input (). ¿Cómo se puede implementar esta entrada del usuario en mi clase?

Masklinn:

Que ha definido from_inputcomo un método regular , esto significa que su primer parámetro es siempre self(no importa el nombre que le des) y tiene que ser llamado, ya sea en una instancia o provistos de una instancia.

Para hacer from_inputuna constructora alternativo (que parece ser la intención aquí) que debe hacerlo en un método de clase por la decoración con @classmethod. En ese caso, el nombre de la (primera) parámetro debe ser clspor ejemplo,

    @classmethod
    def from_input(cls):
        return cls(input(), input())

Por cierto, su implementación de __str__está equivocada. __str__debe volver a la visualización del objeto como una cadena, no se debe imprimir la misma. Si quieres una impresora de algún tipo, a continuación, añadir un método con el que la denominación por ejemplo print_object. Alternativamente, arreglar su __str__continuación, sólo print(reader)o lo que sea.

Por último, las clases son por lo general CamelCased en Python, por lo que shoud sea PersonReaderno Personreader. Aunque no está claro lo que el lector parte es para, su clase es sólo una persona, que por cierto pueden definirse a partir de entradas (coloquialmente lectores son objetos que se pueden cargar datos desde un archivo o archivos como objetos, por ejemplo csv.reader, por lo que una PersonReaderhabría algo que analiza una archivo o de tipo fichero objeto y las cargas de uno o más Personobjetos).

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=347109&siteId=1
Recomendado
Clasificación