欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python自学——构造器 @property @x.setter @x.deleter

程序员文章站 2022-06-15 10:07:57
@property装饰器详解既要保护类的封装特性,又要让开发者可以使用“对象.属性”的方式操作操作类属性,除了使用 property() 函数,Python还提供了@property 装饰器。通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。@property 的语法格式如下@propertydef show(self): return self.__show@x.setter而要想实现修改 show 属性的值......

@property装饰器详解

既要保护类的封装特性,又要让开发者可以使用“对象.属性”的方式操作操作类属性,除了使用 property() 函数,Python 还提供了 @property 装饰器。通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。

@property 的语法格式如下 

@property
def show(self):
    return self.__show

 

@x.setter

而要想实现修改 show 属性的值,还需要为 area 属性添加 setter 方法,就需要用到 setter 装饰器,它的语法格式如下: 

@show.setter
def show(self,value):
    if not  isinstance(value,str):
       raise ValueError('值错误')
    if len(value)<0 or len(value)>100:
        raise ValueError('字符长度出错')
    self.__show = value

@x.deleter  

除此之外,还可以使用 deleter 装饰器来删除指定属性,其语法格式为: 

@show.deleter
def show(self):
    self.__show = '电影结束'

 综合示例:

class TVshow(object):
    @property
    def show(self):
        return self.__show

    @show.setter
    def show(self,value):
        if not  isinstance(value,str):
            raise ValueError('值错误')
        if len(value)<0 or len(value)>100:
            raise ValueError('字符长度出错')
        self.__show = value

    @show.deleter
    def show(self):
        self.__show = '电影结束'

tvshow = TVshow()      #实例化

tvshow.show='正在播放:七个小公主大战矮人'  #执行@show.setter 修改show属性值
print(tvshow.show,'\n')

tvshow.show="正在播放:蛇精大战痴汉"   #继续执行@show.setter 修改show属性值
print(tvshow.show,'\n')

del tvshow.show      #执行@show.deleter 删除指定属性
print(tvshow.show)

 

Python自学——构造器  @property @x.setter @x.deleter

本文地址:https://blog.csdn.net/qq_35451939/article/details/107640190

相关标签: Python