12.07.2015 Views

Python

Python

Python

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

7.6. Testovi pripadnosti klasa i tipova 693. Kona£no, __coerce__ metoda koristi se u dohva¢anju operacija koje uklju£uju mije²ane tipovepodataka. U ovom slu£aju, drugi numeri£ki tipovi pretvaraju se u kompleksne brojeve tako da semogu koristiti u metodama kompleksne aritmetike.7.6 Testovi pripadnosti klasa i tipovaTrenuta£no, postoji odijeljenost izmežu tipova i klasa. To konkretno zna£i, da se ugraženi tipovi poputlista i rje£nika ne mogu specijalizirati naslježivanjem, jer ono za njih ne postoji. Isto tako niti klase nemogu denirati nove tipove. Ustvari, sve klasne denicije imaju tip ClassType, dok sve klasne instanceimaju tip InstanceType. Zbog toga je izraztype(a) == type(b)istinit, za bilo koja dva objekta koja su instance klase (£ak i ako su stvorena iz razli£itih klasa).Provjera pripadnosti klasi provodi se upotrebom ugražene funkcije isinstance(obj,cname). Ovafunkcija vra¢a istinu, ako objekt obj pripada klasi cname ili bilo kojoj klasi izvedenoj iz cname. Naprimjer:class A: passclass B(A): passclass C: passa = A()b = B()c = C()# Instanca od 'A'# Instanca od 'B'# Instanca od 'C'print isinstance(a,A)print isinstance(b,A)print isinstance(b,C)# Vra¢a True# Vra¢a True, B je izveden iz A# Vra¢a False, C nije izveden iz ASli£no, ugražena funkcija issubclass(A ,B ) vra¢a istinu ako je A podklasa klase B. Na primjer:issubclass(B,A)issubclass(C,A)# Vra¢a True# Vra¢a FalseFunkcija isinstance() moºe se koristiti za izvr²avanje provjere tipa s obzirom na bilo koji ugraženitip:import typesisinstance(3, types.IntType)isinstance(3, types.FloatType)# Vra¢a True# Vra¢a FalseOvo je preporu£en na£in provjere tipa mežu ugraženim tipovima, jer ¢e razlika izmežu tipova i klasamoºda i²£eznuti u budu¢im ina£icama <strong>Python</strong>-a.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!