python 类中的私有变量

如何在类中定义一个私有变量呢,我们不希望类里的变量随意被外界访问,python中没有private,只需要在变量前面加上两个下划线就可以了

       

#coding=utf-8
'''
Created on 2016-3-18

@author: Administrator
'''

class PersonDemo():
    def __init__(self):
        self.__name=''
        self.__age = 0
pd = PersonDemo()
print pd.__age      #这条语句会出错
加上两个下划线后,属性或方法就变成了私有的,外界无法访问,但是我们还需要对其进行赋值啊,或是获得其值,那么可以加上get,set函数

#coding=utf-8
'''
Created on 2016-3-18

@author: Administrator
'''

class PersonDemo():
    def __init__(self):
        self.__name=''
        self.__age = 0
    def get_name(self):
        return self.__name
    def set_name(self,value):
        self.__name = value
pd = PersonDemo()
pd.set_name('kwsy')
print pd.get_name()

虽然加上get,set函数后,可以设置和访问私有属性,但使用起来不是很方便,能否像c#里的语法糖那样方便的对私有属性进行访问呢?当然可以,借助property即可

#coding=utf-8
'''
Created on 2016-3-18

@author: Administrator
'''
class Person():
    name = property()
    age = property()
    def __init__(self):
        self.__name = ''
        self.__age = ''
    @name.getter
    def name(self):
        return self.__name
    
    @name.setter
    def name(self,value):
        self.__name = value
        
    @age.getter
    def age(self):
        return self.__age
    
    @age.setter
    def age(self,value):
        self.__age = value
        

p = Person()
p.age = 30
p.name = 'kwsy'
print p.name
print p.age

property是一个装饰器,有了它,我们就可以像C#里的语法糖那样方便的对对象的私有属性进行访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值