Valeur booléenne d'objets en Python
Comme nous le savons, Python a des valeurs booléennes pour les objets: Si une classe a un __len__
méthode, chaque instance de lui pour ce qui __len__()
arrive à retourner la valeur 0 sera évalué comme un booléen False
(par exemple, la liste vide).
En fait, chaque objet iterable, vide d'objet personnalisé est évaluée comme False
si elle apparaît dans l'expression booléenne.
Maintenant, supposons que j'ai une classe foo
avec l'attribut bar
. Comment puis-je définir sa valeur de vérité, de sorte que, par exemple, il sera évalué à True if bar % 2 == 0
et False
autrement?
Par exemple:
myfoo = foo()
myfoo.bar = 3
def a(myfoo):
if foo:
print "spam"
else:
print "eggs"
donc, a(myfoo)
doit imprimer "eggs"
.
- Voir aussi:
__nonzero__()
Vous devez vous connecter pour publier un commentaire.
Reportez-vous à la Python docs pour
__différente de zéro__
.En Python < 3.0 :
Vous devez utiliser
__différente de zéro__
à réaliser ce que vous voulez. C'est une méthode qui est appelée automatiquement par Python lors de l'évaluation d'un objet dans un contexte booléen. Elle doit retourner une valeur de type boolean qui sera utilisée comme valeur à évaluer.E. G :
En Python => 3.0 :
Même chose, à l'exception de la méthode a été rebaptisé d'autant plus évident
__bool__
.__nonzero__
travail ainsi en Python >= 3.0?