python 面向对象私有化 gettes、setters方法应用浅析 为什么不需要为Python对象添加 getter 和 setter

· 前言

  近几日,学校的python课程学到了面向对象这一块内容,在做作业的时候看到老师布置的内容有关于getters、setters两个方法的使用操作;可是老师既没讲清楚,度娘搜到的结果也模模糊糊,没有介绍清楚这一概念,看文章说是被@property 装饰器来替代了功能,以至于现在gettes、setters用法很少。(有兴趣可以参考文章为什么不需要为Python对象添加 getter 和 setter)本来我对面向对象的了解也不是太多,现在我整理一下学习思路。


·私有属性

 Python的类里面默认的成员函数和成员变量都是公开的,Python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了。

        

  (python内最简单的一个类结构,包含公开变量和公开方法)

           

  现在在__self__初始化函数内定义私有变量,无法在外部读取私有变量,会报错:没有 “__num” 属性。


  接下来就要介绍本文的getters、setters方法思想来从外部访问这些私有属性:

  getNum() 方式获取私有变量__num值,setNum()方式更新私有变量__num值。

class Test(object):       
    def __init__(self):   
        self.__num = 100  
    def getNum(self):     
        return self.__num 
    def setNum(self,value)
        self.__num = value
                          
t1 = Test()               
print(t1.getNum())        
t1.setNum(200)            
print(t1.getNum())        

猜你喜欢

转载自www.cnblogs.com/Higgerw/p/10725810.html