Kann ich Variablen in einem Unterklassenobjekt je nach Benutzerbedarf ändern? Wenn ja, wie oder gibt es einen anderen Ansatz?Ändern Sie die Anzahl der selbs.Variablen in der Unterklasse basierend auf der Anforderung des Benutzers
Ich möchte eine Unterklasse Liste von Variablen in Größe basierend auf den Anforderungen eines Benutzers zu wachsen, ohne die * self. * Variablen im init vorschreiben zu müssen, und dem Benutzer erlauben, eine Liste zu erstellen.
Wie behandeln Sie eine Liste mit sich ändernder Länge in der Unterklasse?
class MyClass(object):
def __init__(self, list1, list2): # list 1: keys; list 2: values
len1 = len(list1) # Changing range based on desired keys
for i in range(len1):
self.list1[i] = list2[i] # desired effect
List1 = ['first','second','third']; List2 = [1,2,3];
print(MyClass(List1,List2))
List1.append('fourth'); List2.append(4)
print(MyClass(List1,List2))
gewünschte Ausgabe ist [[getattr(item, x) for x in list1] for item in list2]
kehrt 3 Werte für die erste Instanz und 4 Werte für die zweite Instanz.
Der Fehler, den ich erhalten, wenn getattr(item, x)
auf eine Instanz dieser Klasse versucht, ist AttributeError: 'MyClass' object has no attribute <key>
, wo <key>
list1 ist, eher als der Wert in list1.
Die Work-around ist, ich habe, um die Felder vorab zu füllen, etwa so:
import re
kLs = ("the", "list", "of", "new", "caught", "values")
let = ['a','b','c','d','e','f']
reAN = re.compile("\w+")
for k in kLs: print('self.'+reAN.search(re.sub(r"\s+", "", k)).group()+' = '+let[kLs.index(k)])
ich dies jedes Mal, wenn ich will tun müssen, subtrahieren oder eine Variable hinzuzufügen. Dies wird nicht funktionieren. Jemand?
ich eine Reihe von Änderungen vorgenommen haben, haben aber keine Antwort seit Donnerstag erhalten. Gibt es einen Grund warum? Kannst du wenigstens deinen Griff entfernen und anderen Leuten erlauben zu reagieren? Es wurde nicht erwähnt, warum dies keine angemessene Frage ist. – double0darbo