
Wilson Delgado
Preguntame sale el siguiente error
rather than relying on Globals
UnboundLocalError: local variable ‘name’ referenced before assignment
¿Qué podría hacer?
class Contact: def __init__(self, name,phone,email): self._name=name self.phone=phone self.email=email class contactBook: def __init___(self): self.__contacts=[] def add(self, name,phone,email): print(f'name: {name},phone: {phone}, email: {email}') def run(): contact_book = contactBook(name, phone, email) while True: command = str(input(''' What do you want? [A]dd contact [U]pdate contact [S]earch contact [D]elete contact [L]ist contact [E]xit ''')) if command == 'a': name = str(input('Write the name of the contact')) phone = str(input('Write the telephone of the contact')) email = str(input('Write the email of the contact')) elif command == 'u': print('Update contact') elif command == 's': print('Search contact') elif command == 'd': print('Delete contact') elif command == 'l': print('List contact') elif command == 'e': break else: print('Command not Found.') if __name__ == '__main__': run()

Luis Angel Avila Torres
El error se debe a que en la primera línea del método run estás enviando los parámetros name, phone e email y estas 3 variables aún no tienen un valor asignado. En esta línea se debe llamar la clase sin parámetros para que solo llame el método constructor (_init_) de la siguiente forma:
contact_book = ContactBook()
Adicionalmente, recuerda que por convención los nombres de clases se escriben con la primera letra en mayúscula, lo digo porque el nombre de tu clase ContactoBook está escrito con la primera letra en minúscula.