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









  • 相关阅读:
    黑马程序员文件流的写入
    SCOPE_IDENTITY()代替 @@IDENTITY
    Asp.net 常用的正则表达式汇集
    jquery工作小笔记:jquery获取页面上控件的值
    将公历转换成农历的类_C#
    数字人民币(RMB)转化为大写字母
    常用JS判断各种格式,以及替换函数等
    iis预览.net发布的网站时遇到的莫名问题:无资源行。
    sql 自动补位
    switchhost引发的问题
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6888400.html
Copyright © 2020-2023  润新知