2010-02-03 30 views
6

Sınıf özelliklerinin geçerliliğini kontrol etmek için kodları nerede yazmalıyım? (Örnekler için: "tutar" pozitif bir tamsayı olmalı, "e-posta" doğru e-posta biçimlendirmesi olan bir dize olmalıdır.) Setter yöntemlerinde, Bir yerde bunu (try/catch kullanarak) veya başkalarını kullanırım.Python sınıflarında özelliklerin geçerliliğinin kontrol edilmesi

Setter yöntemlerinde geçerliliği kontrol edersem çirkin görünebilir (tip kontrolü gibi). Ancak bunu kullanırken kontrol edersem, birçok kez kullanıldığında çoğaltılan kod görünebilir. sen hiç bunu yapmak gerekiyorsa

(benim zavallı İngilizce için üzgünüm.)

cevap

4

Kesinlikle, setter bunu.

İlk olarak, ayarlayıcı muhtemelen alıcılardan daha sık çağrılıyor, bu yüzden daha az iş yapıyorsunuz.

İkinci olarak, sorunu daha önce yakalarsınız.

Üçüncü olarak, nesnenin iç durumunu tutarlı tutar. Kötü verilerin saklanması, nesnenizin "doğru" olduğunu bildiğiniz anlamına gelir.

+0

+1: Nesnenin iç durumu kusursuz, tutarlı, doğru olmalıdır. –

2

Çirkin tip denetimi gibi görünüyorsa, bunun nedeni olabilir. Eğer "miktar" ın kesinlikle pozitif bir tamsayı olması gerekiyorsa ve modülün geri kalanı, eğer yoksa, kötü bir şekilde başarısız olur, o zaman bir tür kontrolü yapmanız gerekir.

Bunu yapmanın python yolu, ancak, gerekli olan gerçek özellikleri kontrol etmektir.

Pozitif tamsayı örneğinde, bu, değerin bir Int nesnesi olduğunu kontrol etmemek, bunun yerine bir değere sahip olduğunu ve değerin> 0 olduğunu kontrol etmek anlamına gelir. Bu, diğer programcıların, sayılarını, kesinlikle kendi türlerini kısıtlamaksızın.

Aynı şey e-posta örneği için de geçerlidir - düzgün bir şekilde biçimlendirilmiş olduğunu kontrol edin (kullandığınız e-posta kurallarına uyuyor), ancak Str sınıfının bir örneği olduğu konusunda ısrar etmeyin. Aslında kullanacağınız özellikler haricinde, geçerlilik kontrolünüzde herhangi bir şey üzerinde ısrar etmeyin.

İlgili konular