En un módulo, estoy tratando de reunir entradas_de_cruces y unir cada una, con un espacio. Entonces, quiero imprimir el resultado de un solo raw_input:

def human_infoz():

    name = raw_input("Enter human name> ")
    address = raw_input("Human Address> ")
    phone = raw_input("Human Phone Number> ")
    email = raw_input("Human Email> ")
    listinfo = ["", name, address, phone, email, ""]
    return ' '.join(listinfo)

go = human_infoz()
print go.name

Raw_inputs funcionan bien, pero cuando el script alcanza namez, se tira un pedo.

AttributeError: 'str' object has no attribute 'name'

¿Alguna idea?

0
z82n 28 ago. 2014 a las 00:30

2 respuestas

La mejor respuesta

Puede poner un print name en su código, hacer un class donde name es un attribute o simplemente devolver el nombre y el nombre asignado al segundo argumento de la siguiente manera:

def human_infoz():

    name = raw_input("Enter human name> ")
    address = raw_input("Human Address> ")
    phone = raw_input("Human Phone Number> ")
    email = raw_input("Human Email> ")
    listinfo = ["", name, address, phone, email, ""]
    return ' '.join(listinfo),name

go = human_infoz()
namez = go[1]
print namez

Si desea todos los detalles, simplemente devuelva la lista:

def human_infoz():

    name = raw_input("Enter human name> ")
    address = raw_input("Human Address> ")
    phone = raw_input("Human Phone Number> ")
    email = raw_input("Human Email> ")
    listinfo = [name, address, phone, email]
    return listinfo

go = human_infoz()
namez,add,phone,email = go 

Imprime todos los detalles:

print namez,add,phone,email

Para acceder como está intentando en su pregunta, necesitaría un class

Este es un ejemplo muy básico:

class Details():
    def __init__(self):
        self.name = raw_input("Enter human name> ")
        self.address = raw_input("Human Address> ")
        self.phone = raw_input("Human Phone Number> ")
        self.email = raw_input("Human Email> ")
        self.info = [self.name, self.address, self.phone, self.email]

go = Details() # create instance
# print details by accessing the instance attributes
print go.name,go.address,go.email,go.phone,go.info
2
Padraic Cunningham 27 ago. 2014 a las 20:44

Si desea acceder a estas variables por nombre, ¿por qué no usar un diccionario?

def human_infoz():

    name = raw_input("Enter human name> ")
    address = raw_input("Human Address> ")
    phone = raw_input("Human Phone Number> ")
    email = raw_input("Human Email> ")
    listinfo = {
        "name": name,
        "address": address,
        "phone": phone,
        "email": email
    }
    return listinfo

go = human_infoz()
print go["name"]
0
Alex P. Miller 27 ago. 2014 a las 20:39