type() ve isinstance() arasındaki farklar nelerdir?
Bu iki kod parçası arasındaki farklar nelerdir? type()` kullanarak:
import types
if type(a) is types.DictType:
do_something()
if type(b) in types.StringTypes:
do_something_else()
isinstance()` kullanımı:
if isinstance(a, dict):
do_something()
if isinstance(b, str) or isinstance(b, unicode):
do_something_else()
1153
3
İşte
isinstance
ıntype
ın başaramadığı bir şeyi başardığı bir örnek:Bu durumda, bir kamyon nesnesi bir Araçtır, ancak bunu alacaksınız:
Başka bir deyişle,
isinstance
alt sınıflar için de doğrudur.Ayrıca bakınız:
İkincisi tercih edilir, çünkü alt sınıfları düzgün bir şekilde işleyecektir. Aslında, örneğiniz daha da kolay yazılabilir çünkü
isinstance()
'ın ikinci parametresi bir tuple olabilir:veya
basestring
soyut sınıfını kullanarak:Python belgelerine göre burada bir ifade var:
Bu nedenle
isinstance()
,type()
yerine tercih edilmelidir.