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

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • Elliot Davin

    Elliot Davin

    28 Kasım 2008