Python篇——私有属性

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的私有属性提供了一种方法来增强封装性,但它主要依赖于约定和名称改写,而不是严格的访问控制。开发者应该理解这一机制,并在适当的情况下使用它来提高代码的可维护性和安全性。

posted @ 2024-07-15 13:32  颍2333  阅读(1)  评论(0编辑  收藏  举报