Mam witrynę Django, z obiektem Item
, który ma właściwość boolowską active
. Chciałbym zrobić coś takiego, aby włączyć właściwość z false na true i vice-versa:Czy istnieje sposób na zanegowanie wartości logicznej zwróconej do zmiennej?
def toggle_active(item_id):
item = Item.objects.get(id=item_id)
item.active = !item.active
item.save()
Ta składnia jest ważna w wielu językach C oparte, ale wydaje się nieważny w Pythonie. Czy jest jakiś inny sposób to zrobić bez użycia:
if item.active:
item.active = False
else:
item.active = True
item.save()
Natywna pyton neg()
metoda wydaje się powrót negację liczby całkowitej, a nie negację logiczną.
Dzięki za pomoc.
+1 OMG, nigdy nie wiedziałem, że to możliwe, ma sens, ale nigdy o tym nie myślałem !! Świetna odpowiedź! (Chociaż 'bool (1-True)' jest nieco wolniejszy niż 'nie jest prawdą') –
Możliwe, tak. Przydatny? Raczej nie! Istnieje mnóstwo brzydkich rzeczy, które można zrobić w większości języków, ale dla większości czytelników jest to po prostu straszne. Może w bardzo szczególnym kontekście może to mieć sens ... – BuvinJ