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未定义
    
    
    
    









  • 相关阅读:
    NoSQL学习1
    inno setup 软件打包
    cmapx 保存绘制好的图层
    qt之菜单栏的创建
    qt 软件打包
    可恶的 0xc0000005异常
    成长
    msChart组件安装与编程
    qt 工具下的dump工具导出文档出现异常解决方案
    qt 环境下mapx组件的鼠标跟踪
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6888400.html
Copyright © 2011-2022 走看看