önceki tartışma değişkenlerin ya None
olabileceğini sağlamış görünüyor göz önüne alındığında, bir yaklaşım (eğer değişkenlerin ya None
olduğunda object.updated_date
ayarlamak istediğiniz varsayarak) olacaktır:
if None in (past, object.updated_date) or object.updated_date >= past:
object.updated_date = now
noktası None in (past, object.updated_date)
numaralı kontrolün, semantik olarak denk bir alternatif olan (past is None or object.update_date is None)
'dan daha elverişli olması (daha iyi kompaktlığı sayesinde daha fazla okunabilir bir epsilon olabilir, ama elbette, tartışılabilir bir stil meselesi) olabilir. Bir kenara
ve stil bir az tartışılabilir madde ;-), şiddetle (ve fonksiyonlar vs.) kendi değişkenler için adları gibi yerleşik ins' adları kullanarak karşı tavsiye - object
böyle almanın doğasında olan Bu bağlamda açıkça kendi amaçlarınız için kullanılıyor. Bunun yerine, obj
'u kullanmak daha kısa, yine de okunabilir (biraz daha fazla ;-), ve dezavantajı yoktur). Herhangi bir durumda, "gömülü" yerleşik isimlerin sizin adınıza "gölgelenme" uygulamasıyla "ısırılmış" olma olasılığınız yoktur, ancak sonunda gerçekleşecektir (bazı durumlarda gölgeli ismin normal anlamını bildiğiniz gibi) Daha sonra sıradan bakım işlemi) ve kafa karıştırıcı bir hata ayıklama durumunda olabilirsiniz; Bu arada, diğer okurları/bakıcıları kafa karıştırıyorsunuz ve bu dezavantajlar karşısında kesinlikle hiçbir avantaj elde edemiyorsunuz.
Python'ın yerleşik ins' isimlerin birçoğu bu anlamda bir "çekici sıkıntı" ... file
, object
, list
, dict
, set
, min
, max
olduğunu fark ..."bir dosya", "bir nesne", "bir liste", vb. için görünen tüm çekici adlar. Ama, bu özel günaha karşı direnmeyi öğrenmeye değer! -)
Bu hatayı almanın bir yolu yok. her ikisi de 'datetime.datetime' örnekleriyse, bu satırda –