zoukankan      html  css  js  c++  java
  • python使用@property @x.setter @x.deleter

    python使用@property @x.setter @x.deleter

    @property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。

    • 只有@property表示只读。
    • 同时有@property和@x.setter表示可读可写。
    • 同时有@property和@x.setter和@x.deleter表示可读可写可删除。
    class student(object):  #新式类
        def __init__(self,id):  
            self.__id=id  
        @property  #读  
        def score(self):  
            return self._score  
        @score.setter #写  
        def score(self,value):  
            if not isinstance(value,int):  
                raise ValueError('score must be an integer!')    
            if value<0 or value>100:  
                raise ValueError('score must between 0 and 100')   
            self._score=value  
        @property #读(只能读,不能写)  
        def get_id(self):  
            return self.__id  
      
    s=student('123456')  
    s.score=60 #写  
    print s.score #读  
    #s.score=-2 #ValueError: score must between 0 and 100  
    #s.score=32.6 #ValueError: score must be an integer!  
    s.score=100 #写  
    print s.score #读  
    print s.get_id #读(只能读,不可写)
    #s.get_id=456 #只能读,不可写:AttributeError: can't set attribute
    

    运行结果:

    60
    100
    123456
    
    class A(object):#要求继承object
        def __init__(self):
            self.__name=None
        
        #下面开始定义属性,3个函数的名字要一样!
        @property #读
        def name(self):
            return self.__name
        @name.setter #写
        def name(self,value):
            self.__name=value
        @name.deleter #删除
        def name(self):
            del self.__name
        
    a=A()
    print a.name #读
    a.name='python'  #写
    print a.name #读
    del a.name #删除
    #print a.name # a.name已经被删除 AttributeError: 'A' object has no attribute '_A__name'  
    

    运行结果:

    None
    python
    

    参考链接

  • 相关阅读:
    python的编码判断_unicode_gbk/gb2312_utf8(附函数)
    stat文件状态信息结构体
    内核配置中 ramdisk 大小修改
    mount命令详解
    dirent和DIR 结构体 表示文件夹中目录内容信息
    nandwrite 参数
    mke2fs 制作ext2文件系统image
    ext2文件系统错误
    照度/感光度(Lux)
    摄像机的几个重要的技术指标
  • 原文地址:https://www.cnblogs.com/tomyyyyy/p/12919881.html
Copyright © 2011-2022 走看看