Daha
Bir değişkenin tamsayı olup olmadığını kontrol etme
Bir değişkenin tamsayı olup olmadığını nasıl kontrol edebilirim?
826
3
Bir değişkenin tamsayı olup olmadığını nasıl kontrol edebilirim?
Bunu yapmanız gerekiyorsa, şunları yapın
Python 2.x kullanmıyorsanız, bu durumda
type
kullanmayın. Python'da neredeyse hiçbir zaman doğru cevap değildir, çünkü polimorfizmin tüm esnekliğini engeller. Örneğin, eğer
intalt sınıfını kullanırsanız, yeni sınıfınız bir
intolarak kaydedilmelidir, ki
type` bunu yapmayacaktır:Bu Python'un güçlü polimorfizmine uygundur: bir
int
gibi davranan herhangi bir nesneye izin vermelisiniz, bunun yerine birint
olmasını zorunlu kılmalısınız.BUT
Yine de klasik Python zihniyeti, af dilemenin izin istemekten daha kolay olduğudur. Başka bir deyişle,
x
in bir tamsayı olup olmadığını kontrol etmeyin; olduğunu varsayın ve değilse istisna sonuçlarını yakalayın:Bu zihniyet, nesnenizin özel olarak oluşturulmuş bir sınıftan miras almasını sağlayarak tam olarak hangi özelliklere sahip olması gerektiğini (toplama? çarpma? ikiye katlama?) kaydetmenize olanak tanıyan soyut temel sınıfların kullanımıyla yavaş yavaş aşılmaktadır. Bu en iyi çözüm olacaktır, çünkü tam olarak gerekli ve yeterli niteliklere sahip nesnelere izin verecektir, ancak nasıl kullanılacağına ilişkin belgeleri okumanız gerekecektir.
Daha fazlası için buraya bakınız.
Eğer
int
benzeri nitelikler arıyorsanız bunun yardımcı olmayacağını unutmayın. Bu durumdalong
için de kontrol etmek isteyebilirsiniz:Python kaynağında bir dizi/indeks türüne karşı bu tür kontroller gördüm, ancak bunun C dışında görünür olduğunu sanmıyorum.
Token SO yanıtı: Türünü kontrol etmeniz gerektiğinden emin misiniz? Ya işleyemeyeceğiniz bir türü geçirmeyin ya da potansiyel kod yeniden kullanıcılarınızı alt etmeye çalışmayın, işlevinize bir int geçirmemek için iyi bir nedenleri olabilir.
Burada SO'nun kendisinde bir ilgili soru buldum.
Python geliştiricileri türleri kontrol etmeyi değil, türe özgü bir işlem yapmayı ve bir
TypeError
istisnası yakalamayı tercih ederler. Fakat eğer türü bilmiyorsanız o zaman aşağıdaki durumla karşılaşırsınız.