Özel öznitelik
- Python kursu
- Orta seviye
- Ders 18/116
- 4 dk
_ ve __ ile ad tuzaklarını öğrenirsin.
Özel öznitelik geleneği
Python'da bir özniteliğin özel olduğunu göstermek için başına alt çizgi konur: _balance. Bu bir yaşa değil, geleneksel bir anlaşmadır; dışarıdan erişimi engellemez ama kullanıcının bunu yapmaması beklenir.
İki alt çizgi __balance ise name mangling başlatır: Python, özniteliğin adını _ClassName__balance biçiminde değiştirir. Bu, alt sınıflarda çakışmayı azaltır. Tek alt çizgi günlük kapsüllemede yaygındır.
Dışarıdan erişim
Tek alt çizgili özniteliklere dışarıdan erişilebilir; Python bunu engellemez. Yine de bu, kapsülleme anlaşmasına aykırıdır. İki alt çizgili özniteliklere doğrudan erişilemez; _ClassName__ad gerekir.
Örnek: class Account:\n def __init__(self, balance):\n self._balance = balance. a._balance çalışır ama önerilmez. Kapsülleme, dış kodun iç veriyi doğrudan değiştirmesini zorlaştırmayı amaçlar; @property ile denetim ekleriz.
Uygulama Account'a özel öznitelik ekle
Account adında bir sınıf tanımla. def __init__(self, balance): metodu ekle ve gövdede self._balance = balance yaz. Sonra a = Account(100) ile örnek oluştur ve print(a._balance) ile yazdır.
Başlangıç kodu
# Account sınıfını tanımlaÖrnek çözüm
# Account sınıfını tanımla
class Account:
def __init__(self, balance):
self._balance = balance
a = Account(100)
print(a._balance)Beklenen çıktı
100
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangi önek name mangling başlatır?
- _value
- __value Doğru cevap
- value_
- Value
Açıklama: İki alt çizgi __value adını _ClassName__value biçimine çevirir.
2 Özel özniteliği tamamla
class Account:
def __init__(self, balance):
self.____ = balance
class Account:
def __init__(self, balance):
self._balance = balance
Açıklama: _balance tek alt çizgili özel özniteliktir.
3 Ad geleneklerini eşle
| Kavram | Anlamı |
|---|---|
_value |
Geleneksel özel |
__value |
Ad büken |
value |
Public |