私有变量(private) 【详细+易懂】

在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.最后,我们来说说私有变量有什么用吧。当隐藏内部细节而只留外部接口时,我们让操作变得简单,用时,限制外界的直接访问和修改也让代码的安全性更高

                                                      

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值