在python中,可以通过在属性变量名前加双下划线来定义为私有属性。
1. 当我们定义私有属性是,外界无法直接访问到,如:
复制代码
1
2
3
4
5class Cat(object): def __init__(self,name): #初始化 self.__name=name cat=Cat('Tom') print(cat.__name)
这时,系统会报错 'Cat' object has no attribute '__name' 。
但是,在内部访问是完全可以的,我们调整代码如下:
复制代码
1
2
3
4
5
6
7class Cat(object): def __init__(self,name): #初始化 self.__name=name def show_name(self): #在内部定义一个方法,这个方法在内部调用了__name print('{}'.format(self.__name)) #标准输出格式 cat=Cat('Tom') cat.show_name()
这时候,会输出 Tom 。
2. 通过上面的例子,我们发现,在外部得到私有变量也不是完全不可行的,我们可以在内部定义一个方法,然后在外部调用它,就能在外部得到私有变量的值了,同时,如果一定要在外部修改私有变量的值,也是可行的,我们来看看下面的代码
复制代码
1
2
3
4
5
6
7
8
9
10
11class Cat(object): def __init__(self,name): #初始化 self.__name=name def get_name(self): return self.__name def set_name(self,name): self.__name=name #修改私有变量 cat=Cat('Tom') print('猫猫的名字{}'.format(cat.get_name())) cat.set_name('Peter') #把Peter输入到set中 print('猫猫的新名字{}'.format(cat.get_name()))
此时,系统会输出Tom
Peter
注意,我们引用方法的时候一定不要忘记加上后面的(),而且,私有变量前面都是两个下划线,而定义的方法的名字里面都是单下划线哦~
3.上面的例子调用两个公有方法时输出未免稍显繁复,我们可以在类中定义属性来简化,这么说过于抽象,我们直接上具体的代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13class Cat(object): def __init__(self,name): #初始化 self.__name=name @property #定义get方法,使用修饰器加以修饰,方法名就是属性名 def name(self): return self.__name @name.setter #定义set方法,加以修饰 def name(self,name): self.__name=name #修改私有变量 cat=Cat('Tom') print('猫猫的名字{}'.format(cat.name)) cat.name='Peter' print('猫猫的新名字{}'.format(cat.name))
通过这种方法,我们同样能够输出Tom
Peter
4.最后,我们来说说私有变量有什么用吧。当隐藏内部细节而只留外部接口时,我们让操作变得简单,用时,限制外界的直接访问和修改也让代码的安全性更高
最后
以上就是热情羽毛最近收集整理的关于私有变量(private) 【详细+易懂】的全部内容,更多相关私有变量(private)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复