2017-07-09 2 views
-1

Ich habe ein Problem mit Python-Klassen und String Ich möchte ein Klassenobjekt mit einem String von Raw_input benennen Ich nicht einmal jetzt, wenn dies möglich ist. Das ist wie Ich habe versucht, es zu tun, aber der Code hat nicht funktioniert. Ich habe in vielen Posts auf stackoverflow.com gesucht, aber keiner von diesen wurde beantwortet; Ich bin ein Neofite von Python, ich weiß, wie Klassen und Instanz funktioniert, aber ich kenne keine Funktion, die mir helfen, dieses Problem zu beheben.Probleme mit Python-Objektnamen und Eingabe-String

class example: 
    def _init_(self ,name): 
     self.name=name 
     input1 = raw_input("") 

input1 = example() 
+0

Ihre Einbuchtung Fix bitte. –

Antwort

1

ich nicht, dass Sie dies tun zu empfehlen, aber eine Möglichkeit, es zu tun ist, mit exec():

class Example: 
    pass 

name = raw_input("Enter name: ") 
exec('{} = Example()'.format(name)) 

Unter der Annahme, dass der Benutzer an der Eingabeaufforderung „ABCD“ eingegeben, eine Instanz der Klasse Example würde zu einem „ABCD“ benannte Variable gebunden werden:

>>> abcd 
<__main__.Example instance at 0x7f841fb45908> 

Es gibt selten einen echten Grund, dies zu tun, und ich diesen Ansatz nicht empfehlen, weil exec() eine ausführen kann Benutzereingaben, die ein ernsthaftes Sicherheitsproblem verursachen.

Eine andere Möglichkeit ist es, das globals() Wörterbuch zu aktualisieren:

name = raw_input("Enter name: ") 
globals()[name] = Example() 

aber das ist wahrscheinlich nicht das Beste, was entweder zu tun, und es gibt in der Regel eine bessere Möglichkeit, je nachdem, was Sie erreichen wollen.

Ein sicherer Weg, könnte ein Wörterbuch mit Eingang als Schlüssel verwendet des Benutzers zu verwenden:

user_vars = {} 
name = raw_input("Enter name: ") 
user_vars[name] = Example() 

>>> user_vars['abcd'] 
<__main__.Example instance at 0x7f841fb45908>