Dal momento che l'OP menziona in un commento:
I want 1 and 2
to return an instance of my class.
penso che sia importante sottolineare che questo è del tutto impossibile: Python non consente di modificare tipi built-in (e, in particolare, i loro metodi speciali). Letterale 1
sarà sempre un esempio di tipo ad incasso int
, e in ogni caso la semantica fondamentali del gestore and
non sono comunque overridable - a and b
è sempre identico a b if a else a
per qualsiasia
e b
(senza bool
coercizione coinvolto, anche se l'OP sembra credere erroneamente che stia accadendo).
Riprendendo questo punto cruciale: il valore di a and b
è sempre, immutabilmente sia a
o b
- non v'è alcun modo per rompere questo vincolo semantica (anche se a
e b
erano le istanze di proprie classi peculiari - - ancor meno ovviamente quando sono vincolati ad essere istanze di built-in Python int
! -).
fonte
2010-01-31 18:03:42
Vuoi aggiungere un valore FileNotFound? – Juliano
Una ricerca Google o una ricerca SO per "composizione vs. ereditarietà" potrebbe essere utile qui. – MatrixFrog