Ein Beispiel hinzugefügt, um die Verwendung von __ in Python zu verstehen. Hier ist die Liste aller __
https://docs.python.org/3/genindex-all.html#_
Bestimmte Klassen von Bezeichnern (neben Schlüsselwörtern) haben besondere Bedeutungen. Jede Verwendung von * Namen, in einem anderen Zusammenhang, der nicht explizit dokumentierten Gebrauch folgt, unterliegt einem Bruch ohne Warnung
Zugangsbeschränkung mittels __
"""
Identifiers:
- Contain only (A-z, 0-9, and _ )
- Start with a lowercase letter or _.
- Single leading _ : private
- Double leading __ : strong private
- Start & End __ : Language defined Special Name of Object/ Method
- Class names start with an uppercase letter.
-
"""
class BankAccount(object):
def __init__(self, name, money, password):
self.name = name # Public
self._money = money # Private : Package Level
self.__password = password # Super Private
def earn_money(self, amount):
self._money += amount
print("Salary Received: ", amount, " Updated Balance is: ", self._money)
def withdraw_money(self, amount):
self._money -= amount
print("Money Withdraw: ", amount, " Updated Balance is: ", self._money)
def show_balance(self):
print(" Current Balance is: ", self._money)
account = BankAccount("Hitesh", 1000, "PWD") # Object Initalization
# Method Call
account.earn_money(100)
# Show Balance
print(account.show_balance())
print("PUBLIC ACCESS:", account.name) # Public Access
# account._money is accessible because it is only hidden by convention
print("PROTECTED ACCESS:", account._money) # Protected Access
# account.__password will throw error but account._BankAccount__password will not
# because __password is super private
print("PRIVATE ACCESS:", account._BankAccount__password)
# Method Call
account.withdraw_money(200)
# Show Balance
print(account.show_balance())
# account._money is accessible because it is only hidden by convention
print(account._money) # Protected Access
11 Stimmen
@AustinHenley: Nicht für doppelte Unterstreichungen vor und nach den Namen. Sie denken dabei nur an Unterstriche vor den Namen.
2 Stimmen
Verwandt: "Was ist der historische Grund, warum Python den doppelten Unterstrich für Class Private Members verwendet?" .
4 Stimmen
Mögliches Duplikat von Welche Bedeutung haben eine einfache und eine doppelte Unterstreichung vor einem Objektnamen?
1 Stimmen
@MackM Beachten Sie, dass in dieser Frage nach Unterstrichen gefragt wird vorher und nachher der Name, und das von Ihnen vorgeschlagene doppelte Ziel fragt nur nach Unterstrichen vor den Namen. Allerdings gebe ich zu, dass einige der Antworten dort auch diesen Fall abdecken.