Das ist meine Klasse in der Datei files.py
:bekommt alle Instanzen einer Klasse in Python
class Files():
def __init__(self, *, kwargs1=None, ......, kwargsx=None):
self.kwargs1 = kwargs1
...................
...................
...................
self.kwargsx = kwargsx
__validate()
if self.kwargs1 == "create":
self.__create()
if kwargsx == "remove":
self.__remove()
def __validate():
validate attributes of object and raise execption if fails
def __create(self):
create file
def __remove(self):
remove file
In einer anderen Datei tasks.py
ich diese:
from files import File
File(kwargs1="create", kwargs2="path/to/destination1", kwargs3="/path/to/source1",..........)
File(kwargs1="create", kwargs2="path/to/destination2", kwargs3="/path/to/source2",..........)
Die aktuelle Situation ist, dass jedes Objekt ist validiert werden und dann mit __create()
oder __remove()
fortfahren. Was ich gefragt habe, ist, ob es möglich ist, zuerst alle Objekte zu validieren und dann fortzufahren. Ich könnte es in der tasks.py
erreichen. Ich hatte die privaten Methoden __create()
und __remove()
als öffentliche Methoden create(self)
und remove(self)
und die Klasse sieht wie folgt zu erklären:
class Files():
def __init__(self, *, kwargs1=None, ......, kwargsx=None):
self.kwargs1 = kwargs1
...................
...................
...................
self.kwargsx = kwargsx
__validate()
def __validate():
validate attributes of object and raise execption if fails
def create(self):
create file
def remove(self):
remove file
Und die tasks.py
:
files = []
try:
files.append(File(kwargs1="create", kwargs2="path/to/destination1", kwargs3="/path/to/source1",..........))
files.append(File(kwargs1="create", kwargs2="path/to/destination2", kwargs3="/path/to/source2",..........))
except ValueError as e:
print(e)
else:
for item in files:
if item.kwargsx == "create":
create(item)
elif item.kwargsx == "remove":
remove(item)
Meine Frage ist, ob es möglich ist, zu implementieren Diese Logik in der Klasse Datei selbst? Der einzige Weg, an den ich denken könnte, ist eine Arbeit mit der Überprüfung des Stapels und iterieren über jede Objektinitialisierung, aber ich weiß nicht, ob es funktionieren würde!
ich die Attribute des Objekts nacheinander Validierung erreicht habe , zum Beispiel wenn alles OK mit der ersten Instanz erstellt wird, und dasselbe für das zweite Objekt. Ich versuche, alle Objekte zu bekommen, indem ich sie einzeln überprüfe und dann erst die Aktion für jedes mache, oder das erste Objekt, validiere und speichere es, bekomme das zweite, bestätige und speichere, wenn alles vorbei ist, fahre mit dem entsprechenden fort Aktion für jedes Objekt! Ist ein solches Szenario möglich? – Max
@Max, habe ich Ihnen ein allgemeines Schema zur Verfügung gestellt. In einer Schleife können Sie Ergebnisse akkumulieren und in einer zweiten Schleife darauf reagieren - oder Sie können sie als ein anderes Klassenattribut festlegen und Ihre Entscheidung mit jeder Instanzerstellung akkumulieren und sie dann erneut einmal für alle Instanzen ausführen. – volcano
Danke für deine Antwort, aber ich denke, ich habe meine Frage nicht deutlich gemacht oder ich verstehe einfach nicht, wie es geht. Irgendwie werde ich die Frage bearbeiten. – Max