Çift alt çizgi üyesi C++ 'özel' veya Java anlamı yok - Python oldukça açıkça dil zorlanan erişim kuralları bu tür uzak durur. Bu nedenle, işler dışında hala binebilirsek, ancak bu sınıf arabiriminin desteklenen bir parçası değildir ve - A tek alt çizgi, Kongre tarafından bir "uygulama ayrıntı" gibi bir özelliği veya yöntemi işaretler Sınıfın invaryantlar veya geri/ileri uyumluluğu ile ilgili sağlayabileceği garantiler artık geçerli değildir. Bu, aynı kavramsal problemi “özel” (arayüz ve uygulama ayrımı) olarak farklı bir şekilde çözer. -
Çift hâlâ 'özel' değil adı bozma çağırmak altını
o sayede, yukarıda sadece biraz daha güçlü bir formüldür: - Bu fonksiyon, ama bu sınıfın bir uygulama ayrıntıdır - Altsınıflar olabilir makul __name
sınıfın adını içerecek şekilde karıştırılmış edilmesini sağlayan dil desteği biraz alır orijinal
bir geçersiz kılınmış sürümü olarak geliyordu olmadığını aynı adlı bir yöntemi var bekliyoruz - böylece alt sınıf sürümleri geçersiz kılmak yerine farklı adlar alır. ve Cendereleme hedefi bunu önlemek için açıkça değil - gerçekten istiyorsa bir alt sınıf veya dışında kod bu yöntemi çağırması da hala oldukça mümkündür.
Ama tüm bu nedenle
, 'korumalı' Python çok mantıklı değil çıkıyor - Eğer
gerçekten bir gerçekçi bir alt sınıf tarafından çağrılan (ve sürece Invariants
kırabilir yöntemi, muhtemelen don varsa Yaptığını düşünüyorsanız bile, Python Yolu sadece bunu belgelemek içindir. "Bu sadece alt sınıflar tarafından çağrılan varsayılır" ın etkisine dokunduğunuzda bir not koyun ve müşterilerin doğru şeyi yapacağı varsayımıyla çalıştırın - çünkü yapmazlarsa, kendi problemleri olur.
Yapamazsınız. '_single_underscore' kuralını kullanın ve mutlu olun. – JBernardo