á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
You must be logged in to post a comment.