访问类中私有属性的方式(两种)

1.首先要理解私有属性:

   私有属性主要是指  Python中单下划线和双下划线的区别  (比较直白的意思是:)

_x: 单前置下划线,私有化属性或方法,from somemoudle import *禁止导入,类对象和子类可以访问

__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)

接下来用代码解释:

2.

class People(object):
    def __init__(self):
        self.name = 'zhangsan'
        self._age = '20'
        self.__address = '郑州'


if __name__ == '__main__':
    p = People()
    print(p.name)
    print(p._age)
    print(p.__address)

其实在这里p._age下面有波浪线,p.__address颜色是那种似乎报错的颜色!运行结果:

访问类中私有属性的方式(两种)_第1张图片

显然__address这个地方报错了,说明不能使用。

 

访问类中私有属性的方式(两种)_第2张图片

这里的英文翻译是:对受保护成员的访问,此检查警告是否在类外部访问受保护成员,其定义的类或模块的继承者。

虽然能运行,但是系统还是警告了!所以以后_x的不要随意引用。而且

访问类中私有属性的方式(两种)_第3张图片

这个_age有提示,但是__address没有提示。

3.下面是解决方案:第一种(可以强制使用,但是不建议)

访问类中私有属性的方式(两种)_第4张图片

4.第二种

class People(object):
    def __init__(self):
        self.name = 'zhangsan'
        self._age = '20'
        self.__address = '郑州'

    def get__address(self):
        return self.__address


if __name__ == '__main__':
    p = People()
    print(p.name)
    print(p.get__address())

5.(纯属个人看法)

 

 

你可能感兴趣的:(访问类中私有属性的方式(两种))