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
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
Nasıl Python değişken türünü belirleme...
Java, nesne boyutunu belirlemek için e...
Nasıl bir nesne's sınıfı (Java) b...
Nasıl bir JavaScript nesne, belirli bi...
ruby'de bir nesnenin türünü belirlemek...