• Python高级入门01-property


    JAVA中存在对变量 私有化,公开,保护。。。

    私有化时候,需要提供一个公开的get 和 set方法对外公开,让别人进行调用

    python中同样存在    私有化变量定义是__是这个双下划线,eg:__num  类名不能直接调用,

    #conding=utf-8
    '''
    set get 方法
    私有化__
    '''
    class Test(object):
        def __init__(self):
            self.__num=100
        def setNum(self,setNum):
            self._num=setNum
        def getNum(self):
            return self._num
    
    
    t=Test();
    print(t.__num)
    print(t.getNum())
    t.setNum(200)
    print(t.getNum())
    print(t.__num) 

    
    

    其实这个时候在类名进行调用私有化时候,python解释器吧类名称进行修改了,这时候你是不能直接调用到的,

    私有化时候提供get和set函数

    2。使用定义变量解决私有化调用
    '''
    property第一种用法
    '''
    
    class Test(object):
        def __init__(self):
            self._num=100;
    
        def setNum(self,Nums):
            print('---set---')
            self._num=Nums
        def getNum(self):
            print('---get---')
            return  self._num
    
        num=property(getNum,setNum)
    
    
    t=Test()
    t.num=520
    print(t.num)
    
    

    当你调用这个num时候,你传入 了值,这时候,这个property会直接调用set方法进行赋值, 当你不传时候,会判断的去调用get方法获取

    3.注解获取

    '''
    property第一种用法
    '''
    
    class Test(object):
        def __init__(self):
            self._num=100;
    
        @property
        def num(self):
            print('---get---')
            return self._num
    
        @num.setter
        def num(self,Nums):
            print('---set---')
            self._num=Nums
    
    
    
    
    t=Test()
    t.num=520
    print(t.num)
    这里有一个误区:
    1.t.num时候不能带(),这时候已经定义成 了属性了,
    2.get方法一定要放在set方法上面不然,就会出现@num.setter未定义
    
    
    
    









  • 相关阅读:
    LCA + 二分(倍增)
    Educational Codeforces Round 5
    BNU 51276
    POJ 1511
    hdu2121
    最小树形图(朱刘算法)
    Educational Codeforces Round 1(D. Igor In the Museum) (BFS+离线访问)
    Educational Codeforces Round 1(C. Nearest vectors)
    POJ-2785 4 Values whose Sum is 0(折半枚举 sort + 二分)
    POJ 1661Help Jimmy(逆向DP Or 记忆化搜索 Or 最短路径)
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6888400.html
Copyright © 2020-2023  润新知