如何在类中定义一个私有变量呢,我们不希望类里的变量随意被外界访问,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#里的语法糖那样方便的对对象的私有属性进行访问