在Python中,双下划线(__
)具有特殊的含义,以下是一些常见的用法:
1. 私有变量和方法
(图片来源网络,侵删)
在Python中,以双下划线开头的变量或方法被视为“私有”,这意味着它们不能从类的外部直接访问,这是一种封装的方式,用于隐藏类的内部实现细节。
class MyClass: def __init__(self): self.__private_variable = 42 def __private_method(self): print("This is a private method") 创建对象并尝试访问私有成员 obj = MyClass() obj.__private_variable # 这将引发AttributeError obj.__private_method() # 这也将引发AttributeError
2. 名称修饰(Name Mangling)
虽然双下划线前缀确实使变量和方法成为私有的,但它们并不是完全无法访问的,Python解释器会对这种名称进行修饰,以防止意外访问,它会在私有名称前加上_类名
。
class MyClass: def __init__(self): self.__private_variable = 42 obj = MyClass() print(obj._MyClass__private_variable) # 输出: 42
3. 魔术方法(Magic Methods)
双下划线还用于定义所谓的魔术方法,这些方法是Python内置的特殊方法,用于重载运算符、实现迭代器协议等。__str__
方法用于定义对象的字符串表示形式,__eq__
用于比较两个对象是否相等。
(图片来源网络,侵删)
class MyClass: def __init__(self, value): self.value = value def __str__(self): return f"MyClass instance with value {self.value}" def __eq__(self, other): if isinstance(other, MyClass): return self.value == other.value return False obj1 = MyClass(5) obj2 = MyClass(5) print(obj1) # 输出: MyClass instance with value 5 print(obj1 == obj2) # 输出: True
尽管可以访问和使用这些修饰后的名称,但通常不建议这样做,因为这违反了封装原则。
以上内容就是解答有关python双下划线 _Python的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
(图片来源网络,侵删)
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/66217.html