Δημοσιεύτηκε: 27 Ιουν 2011, 16:17
από Ilias95
Καλησπέρα, μια απορία:

Έστω ότι έχω δημιουργήσει μια απλή κλάση η οποία είναι αυτή:

Spoiler: show
Κώδικας: Επιλογή όλων

class Epafes:
def __init__(self, kati):
allo = input()
self.allo = allo

def tell(self):
print(self.allo)


Και ύστερα ορίζω τα παρακάτω:

Κώδικας: Επιλογή όλων

Giannis = Epafes(1)
Kwstas = Epafes(2)
print('Ποια επαφή θέλεις να δεις;') ; d = input()
d.tell()


Στα οποία προσπαθώ με την input() να πάρω το όνομα μιας ήδη υπάρχουσας μεταβλητής (Giannis ή Kwstas) και να το χρησιμοποιήσω για να πάρω τις πληροφορίες της tell().
Παρ' όλα αυτά ακόμα και αν βάλω ένα όνομα το οποίο όντως υπάρχει, θα πάρω σφάλμα καθώς το πρόγραμμα αναγνωρίζει το d σαν αλφαριθμητικό (str).

Μπορώ με κάποιο τρόπο να μετατρέψω την είσοδο του χρήστη από αλφαριθμητικό σε όνομα μεταβλητής;

Edit:

Το πραγματικό μου πρόβλημα είναι ότι θέλω να δημιουργήσω ένα βιβλίο διευθύνσεων.
Έχω δημιουργήσει την παρακάτω κλάση:

Spoiler: show
Κώδικας: Επιλογή όλων
class Epafes:
global d
d = 1 # Με την μεταβλητή d ορίζω τον αύξων αριθμό μέσα στην __init__.
arithmos_epafwn = 0

def __init__(self, epafi):
global d

print('Εισάγεται στοιχεία της επαφής:\n')
print('Όνομα: ', end='') ; name = input()
print('Επίθετο: ', end='') ; surname = input()
print('e-mail: ', end='') ; mail = input()
print('Διέυθηνση: ', end='') ; address = input()
print('Τηλέφωνο: ', end='') ; telephone = input()
print('Κατηγορία: ', end='') ; category = input()

self.name = name
self.surname = surname
self.mail = mail
self.address = address
self.telephone = telephone
self.category = category

self.k = d # Α/Α - αύξων αριθμός
d += 1
Epafes.arithmos_epafwn += 1

def tell(self):

print('''
{6}. {0} {1}:

Όνομα: {0}
Επίθετο: {1}
e-mail: {2}
Διέυθηνση: {3}
Τηλέφωνο: {4}
Κατηγορία: {5}
'''.format(self.name, self.surname, self.mail, \
self.address, self.telephone, self.category, self.k))


Σε αυτό που έχω κολλήσει είναι στο πως παίρνοντας είσοδο απ' το χρήστη θα εμφανίζω τα στοιχεία της συγκεκριμένης επαφής!
Όταν ο χρήστης δώσει τον αύξων αριθμό της επαφής θα πρέπει να γίνει η παρακάτω διαδικασία:
x.tell()

Όπου το x θα είναι μια ήδη ορισμένη μεταβλητή και θα αντιπροσωπεύει τα στοιχεία μιας επαφής: Epafes(y)
Πως όμως θα ορίζεται η ξεχωριστή μεταβλητή για κάθε επαφή; Και πως με την είσοδο του χρήστη θα καλείτε η x.tell();

Έχω κάνει πολλές προσπάθειες αλλά δεν έχω καταφέρει ακόμα να το επιτύχω. :problem: :wtf:
Αν καταφέρω το παραπάνω με την μετατροπή του str σε τιμή μεταβλητής θα είναι εύκολο. Αλλιώς;
Καμιά ιδέα;