Beispiel Klasse mit Benutzereingaben
In den meisten Beispielen, die ich online gesehen, während Sie (versuchen zu) lernen-Klassen, die Instanzen von Klassen sind definiert durch den Programmierer. Gibt es irgendwelche Möglichkeiten, von der Erstellung einer Instanz einer Klasse, wo es die variable, in der die Klasse definiert ist, die durch den Benutzer?
Dies ist ein Beispiel für ein Objekt aus einer anderen Frage ALSO:
class StackOverflowUser:
def __init__(self, name, userid, rep):
self.name = name
self.userid = userid
self.rep = rep
dave = StackOverflowUser("Dave Webb",3171,500)
Wie können diese so verändert werden, dass die Benutzer erstellen können Instanzen, basierend auf der Klasse?
- Warum denkst du, dass die user können aktuell nicht "erstellen Sie eine Instanz aus der Basis von [sic] die Klasse"? Welche Art von Benutzer? Meinst du unter input vom terminal (siehe z.B. stackoverflow.com/q/24986072/3001761)?
- Warum hat die
StackOverflowUser
Instanz für Dave müssen benannt werdendave
? Eine Instanz braucht nicht einmal einen Namen, zum Beispiel, wenn Sie einelist
oderdict
von Instanzen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es allgemein zwei Möglichkeiten, entweder:
Haben den Eingang völlig außerhalb der Klasse, und übergeben Sie es in
__init__
normal:ist wohl ein einfacheres Konzept; oder
Eingaben innerhalb der Klasse, z.B. mit Hilfe einer Methode der Klasse:
dann nennen mag:
Ich bevorzuge letzteres, da es hält die notwendigen Eingangs-Logik mit der Klasse es gehört, und beachten Sie, dass weder aktuell hat jeder die Validierung der Eingaben (siehe z.B. Bitten Sie den Benutzer zur Eingabe auf, bis Sie geben Sie eine gültige Antwort).
Wenn Sie wollen, um mehrere Benutzer, Sie könnte halten Sie Sie in einem Wörterbuch mit einem eindeutigen Schlüssel (z.B.
userid
- beachten Sie, dass Stack-Überlauf ermöglicht, dass mehrere Benutzer den gleichen Namen haben, so dass würde nicht eindeutig sein):Dann jedem Benutzer zugänglich ist, als
users[id_of_user]
. Man könnte hinzufügen, eine überprüfung abzulehnen Benutzer mit doppelten IDs wie folgt:Eingaben und speichern Sie Sie in Variablen und verwenden Sie Sie zum erstellen der Instanz
from user.py import StackOverflowUser
user = StackOverflowUser(name_here, userid_here, rep_here)
Ist das, was du wolltest?user
oderfoo
oder___
und es sollte noch funktionieren auf die gleiche Weise. Die Variablennamen sollten nicht enthalten den Namen des Benutzers; das ist das, was diename
Attribut ist für.