1 私有属性的特点
Python类中的私有属性是一种实现封装的方式,用于限制对某些属性的直接访问。以下是关于Python类中私有属性的主要特点:
1.1 命名约定
使用双下划线(__)前缀来创建私有属性,例如‘ __private_attr
’
1.2 名称改写(Name Mangling)
Python会自动将双下划线开头的属性名改写,添加类名作为前缀。
例如,在MyClass
中定义的__private_attr
实际上会被改写为_MyClass__private_attr
。
1.3 访问限制
私有属性不能在类外部直接访问。
尝试直接访问会引发AttributeError。
1.4 内部访问
在类的方法内部可以正常访问私有属性。
1.5 间接访问
虽然不推荐,但可以通过名称改写后的形式在类外访问私有属性。
1.6 使用场景
用于隐藏实现细节。
防止属性被意外修改。
避免名称冲突,特别是在继承时。
1.7 注意事项
Python的私有属性并不是完全安全的,更多是一种约定。
不应该过度使用私有属性,因为它可能影响代码的灵活性。
2 示例
2.1 场景分析
线段类,线段类有三个属性:起始点,终止点和线段长度。
有一个方法:show,show方法显示线段的起始点,终止点和线段的长度。
2.2 示例代码
class Segment: def __init__(self,start,end): self.__start = start #start是私有属性 self.__end =end self.__length = self.__end-self.__start def get_start(self): return self.__start def set__start(self,start): self.__start =start self.__length = self.__end-self.__start def show(self): print("start={}".format(self.__start)) print("end={}".format(self.__end)) print("length={}".format(self.__length))
创建对象并调用类中构造函数
s1 = Segment(10,100) s1.show()
输出
start=10 end=100 length=90
创建对象并调用类中构造函数
s1.set__start(20) s1.show()
输出
start=20 end=100 length=80
总之,Python的私有属性提供了一种方法来增强封装性,但它主要依赖于约定和名称改写,而不是严格的访问控制。开发者应该理解这一机制,并在适当的情况下使用它来提高代码的可维护性和安全性。
标签:.__,end,start,Python,self,私有,属性 From: https://www.cnblogs.com/wyy-25/p/18302880