Je crée une classe Verdict qui sera évaluée comme vraie jusqu'à ce qu'elle soit définie comme fausse, après quoi elle sera toujours évaluée comme fausse même si vous la définissez comme vraie. Le seul moyen auquel j'ai pensé pour faire cela serait d'avoir une propriété et un paramètre.
Cela fonctionne, mais pour la simplicité plutôt que pour l'avoir :
v = Verdict()
v.verdict = ...
v.verdict = ...
v.verdict = ...
Je pensais que je pouvais le faire :
v = Verdict().verdict
v = ...
v = ...
v = ...
Mais il semble que v dans le second cas soit l'attribut directement, et ignore le setter.
class Verdict():
def __init__(self):
self.__verdict = True
@property
def verdict(self):
return self.__verdict
@verdict.setter
def verdict(self, value):
if self.__verdict is True:
self.__verdict = value
def __bool__(self):
return self.__verdict
class A():
v = Verdict().verdict
y = Verdict()
def foo(cls):
cls.y = False
cls.y = True # Uses setter and stays false
cls.v = False
cls.v = True # should use setter and stay false but doesn't
Existe-t-il un moyen de résoudre ce problème ou une meilleure méthode pour obtenir le verdict ?