wie kann ich prüfen, ob im folgenden Beispiel das Object die Variable P_TEST hat?
Code: Alles auswählen
class Test1(Test):
P_TEST = '-test'
...
mfg
Twilo
Code: Alles auswählen
class Test1(Test):
P_TEST = '-test'
...
Was ist an LBYL in diesem Zusammenhang falsch? Ich könnte mir durchaus Klassen vorstellen, bei denen durch EAFP alleine schon das Abfragen von nicht-existierenden Klassenattributen diese auf "magische" Art und Weise ins Leben ruft. Eine Art Autovivification für Attribute, wenn man es überhaupt so nennen kann.Leonidas hat geschrieben:Ich finde ``hasattr()`` durchaus akzeptabel in bestimmten Fällen. Das ist zwar LBYL aber in manchen Fällen führt es zu klarerem Code. Zugegeben, besonders oft braucht man ``hasattr()`` aber in aller Regel nicht.
Ob man nun eine Ausnahme abfängt oder vorher nachfragt, ist doch letztendlich egal. Man sollte das nehmen, was im Code besser zu lesen ist. "Readability counts" und "practicality beats purity"DeJe hat geschrieben:Ich mag mich irren...aber bei sauberer Programmierung sollten solche Tests nur zur Fehlersuche nötig sein.
Meinst du dies?farid hat geschrieben:Als kleine Denksport-Aufgabe stellt sich die Frage, wie Attribut-Autovivification bei Python-Klassen bewerkstelligt werden könnte. ;)
Code: Alles auswählen
class X(object):
def __getattr__(self, name):
if name not in self.__dict__:
self.__dict__[name] = 42
return self.__dict__[name]
x = X()
print hasattr(x, 'abc')
print x.__dict__