type – típusok

A types modul használata

állapítsd meg, hogy egy adott változó micsoda:

import types
a = [ ] 

print type( a )

if type( a ) == types.ListType: print ‘ez egy lista!’

Ez a modul típus-mintákat tartalmaz minden egyes objektum-fajtához, mely a Python értelmezőben definiálva van. Minden azonos fajtájú objektum ugyanazon a típus-mintán osztozik, ezért az is operátorral ellenőrizhető az objektum típusa. (valójában típus-objektumokról van szó, de a mintát használva a példa érthetőbb. Az operátorok leírása azért van itt, mert használjuk őket a típusellenőrzésnél)

Érdemes tudni, hogy minden osztály ugyanahhoz a típushoz tartozik. Annak kiderítéséhez, hogy egy példány melyik osztálynak az eleme, vagy egy osztály melyik osztályból származik, az issubclass és isinstance utasításokat használd.

# File: nyelvtan_erdekes_operatorok_es_halmazvizsgalat_es_tipusvizsgalat.py gyumolcsok = ["alma", "repa", "korte"] def teszteles(gyumolcsnev): if gyumolcsnev in gyumolcsok: print gyumolcsnev, "a gyumolcsok halmaz resze" else: print gyumolcsnev, "nem resze a gyumolcsok halmaznak" # gyakorlatilag ez a halmazvizsgalat: if "korte" in gyumolcsok: # ha korte benne van a gyumolcsokben, akkor.... print "korte", "a gyumolcsok halmaz resze" if "banan" not in gyumolcsok: # ha a banan nincs benne a gyumolcsokben, akkor.... print "a banan nem resze a gyumolcsok halmaznak" # fapados tipusvizsgalatok ===================== print "\negy szoveg tipusa: ", repr( type("szoveg") ) #repr utasitas egy objektumot karakterlancca alakit,hogy kijelezheto legyen print "egy egesz szam tipusa: ", repr( type(1) ) print "\n" # uressor. if type(123) is not type("szoveg"): # a feltetel akkor teljesul, ha a ket objektum tipusa nem egyezik. print 123, "egesz szam, szoveg pedig karakterlanc. Mivel kulonbozo tipusuak, a feltetel teljesul." a= "egyik_szoveg" if type(a) is type(""): # itt a objektum es "" objektum tipusat hasonlitjuk ossze. print a, "karakterlanc, mert tipusa megegyezik egy masik objektum tipusaval, amirol tudjuk hogy karakterlanc" # =============================== # komoly tipusvizsgalat import types def tipusellenorzes(object): print object, if type(object) is types.IntType: print "INTEGER - egesz szam", if type(object) is types.FloatType: print "FLOAT - lebegopontos szam", if type(object) is types.StringType: print "STRING - karakterlanc", if type(object) is types.ClassType: print "CLASS - osztaly", if type(object) is types.InstanceType: print "INSTANCE - egy objektum peldanya", print tipusellenorzes(0) tipusellenorzes(0.0) tipusellenorzes("0") class A: pass class B: pass tipusellenorzes(A) tipusellenorzes(B) a = A() b = B() tipusellenorzes(a) tipusellenorzes(b)

# File: nyelvtan_erdekes_operatorok_es_halmazvizsgalat_es_tipusvizsgalat.out korte a gyumolcsok halmaz resze a banan nem resze a gyumolcsok halmaznak egy szoveg tipusa: <type 'str'> egy egesz szam tipusa: <type 'int'> 123 egesz szam, szoveg pedig karakterlanc. Mivel kulonbozo tipusuak, a feltetel teljesul. egyik_szoveg karakterlanc, mert tipusa megegyezik egy masik objektum t ipusaval, amirol tudjuk hogy karakterlanc 0 INTEGER - egesz szam 0.0 FLOAT - lebegopontos szam 0 STRING - karakterlanc __main__.A CLASS - osztaly __main__.B CLASS - osztaly <__main__.A instance at 0x00B945A8> INSTANCE - egy objektum peld anya <__main__.B instance at 0x00B946C0> INSTANCE - egy objektum peld anya

Post Comments

You must be logged in to post a comment.