Lisää
Sen tarkistaminen, onko muuttuja kokonaisluku vai ei
Miten tarkistan, onko muuttuja kokonaisluku?
826
3
Miten tarkistan, onko muuttuja kokonaisluku?
Jos sinun on tehtävä tämä, tee
ellet ole Python 2.x:ssä, jolloin haluat
Älä käytä
type
. Se ei ole lähes koskaan oikea vastaus Pythonissa, koska se estää kaiken polymorfismin joustavuuden. Jos esimerkiksi aliluokkaint
on aliluokka, uuden luokkasi pitäisi rekisteröityäint
-luokaksi, mitätype
ei tee:Tämä noudattaa Pythonin vahvaa polymorfismia: sinun pitäisi sallia mikä tahansa objekti, joka käyttäytyy kuin
int
, sen sijaan, että velvoittaisit sen olemaan sellainen.BUT
Klassinen Python-mentaliteetti on kuitenkin se, että on helpompaa pyytää anteeksiantoa kuin lupaa. Toisin sanoen, älä tarkista, onko
x
kokonaisluku, vaan oleta, että se on, ja ota kiinni poikkeustulokset, jos se ei ole:Tämä ajattelutapa on hitaasti ohitettu abstraktien perusluokkien käytöllä, joiden avulla voit rekisteröidä tarkalleen, mitä ominaisuuksia objektillasi pitäisi olla (yhteenlasku? kertolasku? kaksinkertaistaminen?) tekemällä sen periytyväksi erikoisrakenteisesta luokasta. Se olisi paras ratkaisu, koska se sallii tarkasti ne objektit, joilla on tarvittavat ja riittävät ominaisuudet, mutta sinun on luettava dokumentit sen käytöstä.
Katso lisätietoja täältä.
Huomaa, että tämä ei auta, jos etsit
int
-tyyppisiä attribuutteja. Tällöin saatat haluta tarkistaa myöslong
-ominaisuuden:Olen nähnyt tämäntyyppisiä tarkistuksia array/index-tyyppiä vastaan Python-lähteessä, mutta en usko, että se näkyy C:n ulkopuolella.
Token SO vastaus: Oletko varma, että sinun pitäisi tarkistaa sen tyyppi? Joko älä anna tyyppiä, jota et voi käsitellä, tai älä yritä huijata mahdollisia koodin uudelleenkäyttäjiäsi, heillä voi olla hyvä syy olla antamatta funktiollesi intiä.
Löysin asiaan liittyvän kysymyksen täältä SO:sta.
Python-kehittäjät haluavat olla tarkistamatta tyyppejä vaan tehdä tyyppikohtaisen operaation ja ottaa kiinni
TypeError
poikkeuksen. Mutta jos et tiedä tyyppiä, niin sitten sinulla on seuraava.