Mere
Kontrol af, om en variabel er et heltal eller ej
Hvordan kontrollerer jeg, om en variabel er et heltal?
826
3
Hvordan kontrollerer jeg, om en variabel er et heltal?
Hvis du har brug for det, skal du gøre følgende
medmindre du er i Python 2.x, i hvilket tilfælde du vil have
Brug ikke
type
. Det er næsten aldrig det rigtige svar i Python, da det blokerer for al fleksibiliteten i polymorphisme. Hvis du f.eks. underklassererint
, skal din nye klasse registrere sig somint
, hvilkettype
ikke gør:Dette overholder Python's stærke polymorfisme: du bør tillade ethvert objekt, der opfører sig som en
int
, i stedet for at foreskrive, at det skal være en sådan.BUT
Den klassiske Python-mentalitet er dog, at det er lettere at bede om tilgivelse end om tilladelse. Med andre ord, lad være med at kontrollere om
x
er et heltal; antag at det er det og fang undtagelsen hvis det ikke er det:Denne mentalitet er langsomt ved at blive overhalet af brugen af abstrakte basisklasser, som lader dig registrere præcis hvilke egenskaber dit objekt skal have (addition? multiplikation? fordobling?) ved at lade det arve fra en specielt konstrueret klasse. Det ville være den bedste løsning, da det vil tillade præcis disse objekter med de nødvendige og tilstrækkelige egenskaber, men du bliver nødt til at læse dokumentationen om, hvordan du bruger den.
Se her for mere.
Bemærk, at dette ikke hjælper, hvis du leder efter
int
-lignende attributter. I dette tilfælde skal du måske også tjekke forlong
:Jeg'har set kontroller af denne art mod en array/index-type i Python-kilden, men jeg tror ikke, at det er synligt uden for C.
Token SO svar: Er du sikker på, at du skal kontrollere dens type? Enten don't pass en type du ikke kan'håndtere, eller don't forsøge at overliste dine potentielle kode genbrugere, de kan have en god grund til ikke at pass en int til din funktion.
Jeg har fundet et [relateret spørgsmål] (https://stackoverflow.com/questions/402504/how-to-determine-the-variable-type-in-python) her på SO selv.
Python-udviklere foretrækker ikke at kontrollere typer, men at udføre en type-specifik operation og fange en
TypeError
-undtagelse. Men hvis du ikke kender typen, så har du følgende.