zoukankan      html  css  js  c++  java
  • 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未定义
    
    
    
    









  • 相关阅读:
    Sharding-JDBC(三)3.1.0版本实践
    Sharding-JDBC(二)2.0.3版本实践
    Sharding-JDBC(一)简介
    Java并发(六)线程池监控
    Java并发(五)线程池使用番外-分析RejectedExecutionException异常
    Java并发(四)线程池使用
    Java并发(三)线程池原理
    Java并发(二)异步转同步
    tarjan+概率
    线段树(种树)
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6888400.html
Copyright © 2011-2022 走看看