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

  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • Drakinen

    Drakinen

    1 EYLÜL 2008
  • Warner Bros. UK

    Warner Bros.

    6 HAZİRAN 2008