(@property,@*.setter,@*.deleter)

(@property,@.setter,@.deleter)

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

1、只有@property表示只读。

2、同时有@property和@*.setter表示可读可写。

3、同时有@property和@*.setter和@*.deleter表示可读可写可删除。

setter例子

class test():

    def __init__(self,t_id='520'):
        self.__id =t_id


    @property
    def score(self):
        return self._score

    @score.setter
    def score(self,t_score):
        if not isinstance(t_score,int):
            raise  ValueError('请输入整型数据类型的分数')
        if t_score <0 or t_score>100:
            print('数值不在有效范围内')
        else:
         print(t_score,'操作成功')
        self._score=t_score



    @property
    def get_id(self):
        return self.__id


aa=test('111')
aa.score=99
print('id : ',aa.get_id)
print('score : ',aa.score)


print('=============')
aa=test()
aa.score=-88
print('id : ',aa.get_id)
print('score : ',aa.score)

在这里插入图片描述

deleter例子

class test():

    def __init__(self,t_id='520'):
        self.__id =t_id


    @property
    def score(self):
        return self._score

    @score.setter
    def score(self,t_score):
        if not isinstance(t_score,int):
            raise  ValueError('请输入整型数据类型的分数')
        if t_score <0 or t_score>100:
            print('数值不在有效范围内')
        else:
         print(t_score,'操作成功')
        self._score=t_score

    @score.deleter
    def score(self):
        del self._score

    @property
    def get_id(self):
        return self.__id


aa=test('111')
aa.score=99
print('id : ',aa.get_id)
print('score : ',aa.score)
del aa.score
print(aa.score)

print('=============')
aa=test()
aa.score=-88
print('id : ',aa.get_id)
print('score : ',aa.score)

在这里插入图片描述

发布了96 篇原创文章 · 获赞 8 · 访问量 4358

猜你喜欢

转载自blog.csdn.net/weixin_46108954/article/details/104596632
今日推荐