class car(object):
def read_spec_and_populate_db():
spec = read_from_file(spec.yaml)
populate_db(spec)
class awd(car):
super(awd, self).read_spec_and_populate_db()
def foo(self):
...
class fwd(car):
super(fwd, self).read_spec_and_populate_db()
def bar(self):
...
Klasse awd
und fwd
können zu unterschiedlichen Zeiten instanziiert werden oder nur einer von ihnen kann instanziiert ausgeführt werden soll. Gibt es nun eine Möglichkeit, die Basisklassenmethode read_spec_and_populate_db() so einzuschränken, dass sie nur einmal ausgeführt wird?Wie Basisklassenmethode beschränken nur einmal
Ich habe in SO gesucht und here gefunden. Wollte sehen, ob es andere Möglichkeiten gibt.
Edit: Nicht, dass ich dagegen bin. Ich suche nach Ideen abgesehen von der Verwendung einer Flagge. Meine aktuelle Implementierung verwendet ein Flag in der Klasse.
und zu erklären: Sie werden verfolgen, haben irgendwie „es gelesen wurde“, und ein Flag ist ein vollkommen klar Weg genau das zu kommunizieren. Mach keine magischen Sachen nur für die Magie. – MatsLindh
das ist in Ordnung, außer dass eine Klassenmethode sauberer IMO ist, nein? Wenn ja, aktualisieren Sie Ihre Antwort und ich werde meine löschen. Ich habe bereits Ihre hochgeladen –
Eine Klassenmethode funktioniert nicht mit Vererbung. Wenn Sie eine Instanz von 'awk' erstellen, wird zuerst 'awk.populated = True' erstellt. Dann, wenn Sie eine Instanz von "Auto" machen, ist "car.populated" immer noch falsch und die Spezifikationen werden ein zweites Mal gelesen. –