目次
1. Sissejuhatus
Miks on Pythonis tüübi kontrollimine oluline? Python on dünaamiliselt tüübitud keel, kus muutujate ja objektide tüüp määratakse käituse ajal. Tänu paindlikule keelekujundusele ei ole vaja tüüpi selgesõnaliselt deklareerida, kuid see paindlikkus võib põhjustada ootamatuid tüübi vigu ja töökatkestusi. Seetõttu on tüübi kontrollimine oluline Pythonis programmide töökindluse ja stabiilsuse säilitamiseks. Käesolevas artiklis käsitleme peamisi meetodeid tüübi kontrollimiseks Pythonis:type()
, isinstance()
ja teisi täiustatud meetodeid.2. Andmetüüpide ülevaade Pythonis
Pythonis on erinevaid andmetüüpe, nagu arvutüübid, stringid, loendid ja sõnastikud. Igal andmetüübil on oma kasutusala ning tüübi kontroll aitab vältida ootamatuid vigu.Peamised andmetüübid
- Arvutüübid (int, float) Arvutüüpidesse kuuluvad
int
täisarvude jaoks jafloat
ujukoma arvude jaoks.
num1 = 10
num2 = 3.14
print(type(num1)) # <class 'int'>
print(type(num2)) # <class 'float'>
- Stringitüüp (str) Tekstiandmete hoidmiseks kasutatakse
str
tüüpi, mis määratakse üksikute või topelt jutumärkidega.
text = "Hello, World!"
print(type(text)) # <class 'str'>
- Loend (list) Loend on järjestatud kogum, mis võib sisaldada mitmeid elemente. Loendid määratakse
[]
abil ja võimaldavad erinevaid operatsioone.
mylist = [1, 2, 3, 4]
print(type(mylist)) # <class 'list'>
- Sõnastik (dict) Sõnastik salvestab andmeid võtme-väärtuse paaridena ja määratakse
{}
abil.
mydict = {"one": 1, "two": 2}
print(type(mydict)) # <class 'dict'>

3. Tüübi kontroll type()
funktsiooniga
type()
on sisseehitatud funktsioon, mis tagastab objekti tüübi. See on lihtne ja kasulik meetod objektide tüübi kontrollimiseks.type()
funktsiooni põhiline kasutus
Järgmises näites kontrollitakse muutuja tüüpi type()
funktsiooni abil.myvar = 1234
print(type(myvar)) # <class 'int'>
Sama meetodit saab kasutada ka teiste tüüpide puhul.mystr = "Hello"
print(type(mystr)) # <class 'str'>
type()
eelised ja piirangud
type()
on lihtne, kuid alamaklasside puhul tuleb olla ettevaatlik. type()
kontrollib ainult täpset tüüpi, mitte pärimissuhet.class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(type(dog) == Animal) # False
Selles näites on Dog
Animal
i alamaklass, kuid type()
tagastab False
. Sellistel juhtudel on parem kasutada isinstance()
.4. Tüübi kontroll isinstance()
funktsiooniga
isinstance()
kontrollib, kas objekt kuulub kindlasse tüüpi või selle alamaklassi. See võimaldab paindlikumat tüübi kontrollimist.isinstance()
põhiline kasutus
Järgmises näites kontrollitakse muutuja tüüpi isinstance()
abil.myvar = 1234
print(isinstance(myvar, int)) # True
Siin tagastatakse True
, sest myvar
on int
tüüp.Mitme tüübi kontroll
isinstance()
võimaldab kontrollida mitut tüüpi korraga, andes need tuple’i kujul.value = 3.14
print(isinstance(value, (int, float))) # True
See on kasulik, kui on vaja kontrollida mitut tüüpi korraga.Alamaklasside kontroll
isinstance()
arvestab ka pärimissuhet ning saab kontrollida, kas objekt kuulub alamaklassi kaudu teise klassi.class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Animal)) # True
Selles näites tagastab kontroll True
, sest Dog
pärib Animal
klassist.
5. Muud tüübi kontrollimise meetodid
Lisakstype()
ja isinstance()
funktsioonidele on Pythonis ka teisi meetodeid tüübi kontrollimiseks, mida saab kasutada vastavalt vajadusele.issubclass()
funktsioon
issubclass()
kontrollib, kas üks klass on teise klassi alamaklass.class Animal:
pass
class Dog(Animal):
pass
print(issubclass(Dog, Animal)) # True
collections.abc
moodul
collections.abc
moodul on kasulik kogumite (nagu loendid või sõnastikud) tüübi kontrollimisel. Näiteks saab kontrollida, kas loend on Sequence
.import collections.abc
mylist = [1, 2, 3]
print(isinstance(mylist, collections.abc.Sequence)) # True
typing
moodul ja tüübi vihjed
typing
moodul võimaldab lisada koodi staatilise tüübi kontrolli. See suurendab loetavust ja lihtsustab silumist.from typing import List
def greet(names: List[str]) -> None:
for name in names:
print(f"Hello, {name}!")
NoneType
kontroll
NoneType
on None
objekti tüüp. Selle kontrollimine aitab vältida ootamatuid vigu.myvar = None
print(type(myvar)) # <class 'NoneType'>
NoneType
kontroll on kasulik näiteks juhul, kui funktsiooni tagastusväärtus võib olla None
.