python带下划线的函数 python下划线开头函数总结示例详解 python
目录
- 1. 魔法技巧(独特技巧)
- 常见魔法技巧示例
- 调用示例
- 2. 私有技巧和属性(名称修饰)
- 名称修饰制度
- 示例代码
- 3. 与单下划线_的区别
- 示例对比
- 4. 使用场景建议
- 拓展资料
在Python中,以双下划线 __
开头的函数(或变量)具有独特的命名含义,主要用于实现类的私有成员、魔法技巧(独特技巧)和名称修饰(Name Mangling)机制。下面详细解释这三种情况:
1. 魔法技巧(独特技巧)
以双下划线开头并小编觉得的技巧(如 __init__
、__str__
)称为魔法技巧(Magic Methods)或独特技巧(Special Methods)。这些技巧由Python解释器自动调用,用于实现类的内置行为。
常见魔法技巧示例
class MyClass: def __init__(self, value): 构造函数,创建对象时自动调用 self.value = value def __str__(self): 对象转字符串时调用(如print()) return f”MyClass(value=self.value})” def __add__(self, other): 定义加法操作(如obj1 + obj2) return MyClass(self.value + other.value) def __len__(self): 定义长度(如len(obj)) return 1
调用示例
a = MyClass(10)b = MyClass(20)print(a + b) 自动调用 __add__ 和 __str__print(len(a)) 自动调用 __len__
2. 私有技巧和属性(名称修饰)
以双下划线开头但不以双下划线小编觉得的技巧(如 __private_method
)是类的私有成员,通过名称修饰(Name Mangling)机制实现一定程度的访问限制。
名称修饰制度
Python会将类中的 __private_method
重命名为 _类名__private_method
,使得该技巧在类外部难以直接访问,但并非完全禁止。
示例代码
class MyClass: def __public_method(self): print(“这是公开技巧”) def __private_method(self): print(“这是私有技巧”) def call_private(self): self.__private_method() 类内部可以正常调用obj = MyClass()obj.__public_method() 正常调用 obj.__private_method() 报错:AttributeErrorobj._MyClass__private_method() 可以访问,但不推荐(违反封装规则)
3. 与单下划线_的区别
- 单下划线
_method
:约定俗成的弱私有成员,仅作为开发者之间的约定,外部仍可访问。 - 双下划线
__method
:通过名称修饰实现的强私有成员,外部访问需通过_类名__method
。
示例对比
class MyClass: def _single_underscore(self): print(“单下划线技巧”) def __double_underscore(self): print(“双下划线技巧”)obj = MyClass()obj._single_underscore() 可以正常调用(约定不调用)obj._MyClass__double_underscore() 可以调用(但破坏封装)
4. 使用场景建议
- 魔法技巧:用于实现类的独特行为,如运算符重载、对象创建和销毁等。
- 私有技巧:用于隐藏类的内部实现细节,避免外部直接调用(但需注意并非完全安全)。
- 单下划线:用于模块级的私有成员(导入时
from module import
不会导入)或内部临时变量。
拓展资料
命名方式 | 含义 | 示例 |
---|---|---|
__method__ |
魔法技巧,Python内置行为 | __init__ , __add__ |
__method |
私有技巧,通过名称修饰实现封装 | __private_method |
_method |
弱私有,约定不被外部直接访问 | _helper_method |
双下划线命名是Python实现封装和独特行为的重要机制,合理使用可以进步代码的可读性和可维护性。
到此这篇关于python下划线开头函数拓展资料的文章就介绍到这了,更多相关python下划线开头函数内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
无论兄弟们可能感兴趣的文章:
- python类中函数名前后加下划线的具体使用
- python?函数、变量中单下划线和双下划线的区别详解
- Python中单下划线和双下划线的使用详解
- Python五种下划线详解
- 通俗讲解Python中的五种下划线含义
- 详解Python中下划线的5种含义
- Python中的单下划线和双下划线使用场景详解
- python中单下划线(_)和双下划线(__)的独特用法
- Python中单、双下划线的区别拓展资料