当前位置:网站首页>私有变量(private) 【详细+易懂】
私有变量(private) 【详细+易懂】
2022-08-03 05:11:00 【北北的巷栀酒】
在python中,可以通过在属性变量名前加双下划线来定义为私有属性。
1. 当我们定义私有属性是,外界无法直接访问到,如:
class Cat(object):
def __init__(self,name): #初始化
self.__name=name
cat=Cat('Tom')
print(cat.__name)
这时,系统会报错 'Cat' object has no attribute '__name' 。
但是,在内部访问是完全可以的,我们调整代码如下:
class 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. 通过上面的例子,我们发现,在外部得到私有变量也不是完全不可行的,我们可以在内部定义一个方法,然后在外部调用它,就能在外部得到私有变量的值了,同时,如果一定要在外部修改私有变量的值,也是可行的,我们来看看下面的代码
class 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.上面的例子调用两个公有方法时输出未免稍显繁复,我们可以在类中定义属性来简化,这么说过于抽象,我们直接上具体的代码
class 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.最后,我们来说说私有变量有什么用吧。当隐藏内部细节而只留外部接口时,我们让操作变得简单,用时,限制外界的直接访问和修改也让代码的安全性更高
边栏推荐
- 传说中可“免费白拿”的无线路由器 - 斐讯 K2 最简单刷 breed 与第三方固件教程
- 轨迹(形状)相似性判断与度量方法
- 第三次HarmonyOS培训
- HarmonyOS应用开发培训第二次作业
- UV decomposition of biotin - PEG2 - azide | CAS: 1192802-98-4 biotin connectors
- 第四次培训
- HarmonyOS应用开发第一次培训
- Common fluorescent dyes to modify a variety of groups and its excitation and emission wavelength data in the data
- web安全-命令执行漏洞
- typescript42-readonly修饰符
猜你喜欢
3. 无重复字符的最长子串
MCM box model modeling method and source analysis of atmospheric O3
2. 两数相加
typescript41-class类的私有修饰符
Apache DolphinScheduler版本2.0.5分布式集群的安装
Ali cloud object storage oss private barrels to generate links
Build your own web page on the Raspberry Pi (2)
web安全-PHP反序列化漏洞
web安全-SSTI模板注入漏洞
typescript44-对象之间的类兼容器
随机推荐
集合框架知识
【Harmony OS】【ARK UI】ets use startAbility or startAbilityForResult to invoke Ability
minio下载文件乱码或者是一条横线
Get the Ip tool class
-元素之和-
odps的临时查询能在写sql的时候就给结果一个命名不?
判断回文数
PotPlayer实现上班摸鱼电视自由
typescript44-对象之间的类兼容器
[Harmony OS] [ARK UI] ETS context basic operations
shell script loop statement
Ali cloud object storage oss private barrels to generate links
第三次HarmonyOS培训
Installation of Apache DolphinScheduler version 2.0.5 distributed cluster
2022暑假牛客多校联赛第一场
ss-4.2 多个eureka集群案例
Length n of condensed distance matrix ‘y‘ must be a binomial coefficient
详解Nurbs曲线
typescript42-readonly修饰符
flask 面试题 问题