Python中的双下划线__

在Python中,双下划线(__)具有几个不同的含义和用途,常用于特殊方法、名称修改以及避免命名冲突等。以下是常见的几个双下划线用法:

1. 双下划线前缀 (__variable) —— Name Mangling(名称修饰)

  • 双下划线前缀会触发名称修饰,也称为“name mangling”,即在类的内部将变量或方法名修改为不同的形式。这是为了避免子类中出现与父类变量同名的冲突。

  • 示例

    class MyClass:
        def __init__(self):
            self.__private_var = 42  # 私有变量,不能直接访问
    
        def __private_method(self):
            print
Python中,`__`(下划线)用于表示私有成员(private members)。当一个属性或方法前加上下划线(`__`)时,它会成为类内部的一个隐藏元素,意味着外部无法直接访问该成员。 ### 私有成员的作用 1. **封装**:私有成员有助于限制对类内部数据的直接访问,可以保护类的数据结构不受外界意外更改的影响,提高程序的安全性和健壮性。 2. **隐藏实现细节**:通过将一些属性标记为私有,可以让使用者只关注其功能而不必关心底层实现细节,这对于设计模块化的、易于维护的代码库非常有用。 ### 如何创建私有成员 要在Python中创建私有成员,只需要在其名称前面添加两个下划线即可: ```python class MyClass: def __init__(self): self.__private_attribute = "This is a private attribute." def public_method(self): print("Public method called.") ``` 在这个例子中,`__private_attribute`是一个私有属性,而`public_method`是一个公共方法。尝试从外部访问`__private_attribute`将导致`AttributeError`错误。 ### 使用场景示例 假设我们有一个简单的银行账户类,我们需要保护账户余额,并仅允许存款和取款操作: ```python class Account: def __init__(self, balance=0): self.__balance = balance def deposit(self, amount): self.__balance += amount def withdraw(self, amount): if amount <= self.__balance: self.__balance -= amount else: print("Insufficient funds.") def get_balance(self): return self.__balance ``` 在这里,`__balance`是一个私有属性,只有通过提供的`deposit()`, `withdraw()` 和 `get_balance()`等公有方法才能修改或获取。这种封装使得类能够更安全地管理其内部状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LisaHusband

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值