SORU
8 ŞUBAT 2010, PAZARTESİ


Bir nesne türünü belirlemek?

Eğer bir değişken bir liste, sözlük ya da başka bir şey olup olmadığını belirlemek için basit bir yolu var mı? Bir nesne ya da bir tür olabilir alıyorum ve farkı söylemek mümkün olmak istiyorum.

CEVAP
8 ŞUBAT 2010, PAZARTESİ


Bir nesne türü için, yerleşik type() işlevini kullanabilirsiniz. Tek parametre olarak bir nesne geçen nesne, nesne türü döndürür

>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True
>>> type({})
<type 'dict'>
>>> type([])
<type 'list'>

Tabii ki bu da özel türler için çalışır:

>>> class Test1 (object):
        pass
>>> class Test2 (Test1):
        pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True

type() Tek hemen nesnenin türünü döndürür, ama yazın mirastan bahsetmek mümkün olmayacaktır.

>>> type(b) is Test1
False

Bunu haber isinstance işlevi kullanmalısınız. Tabii ki bu da yerleşik türleri için çalışır:

>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True

isinstance() genellikle de türetilmiş türlerini kabul eder, çünkü bir nesne türünü sağlamak için tercih edilen yoldur. Yani aslında tür nesne (sebebi ne olursa olsun) gerekli olmadıkça, isinstance() type() tercih edilir.

isinstance() ikinci parametre aynı zamanda birden çok türü aynı anda kontrol etmek için yani bu tür bir başlığın kabul eder. isinstance nesnenin bu tür herhangi biri ise true döndürür

>>> isinstance([], (tuple, list, set))
True

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • engineerguy

    engineerguy

    10 Ocak 2010
  • SelmerSaxMan

    SelmerSaxMan

    24 HAZİRAN 2006
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010