python借助property装饰器美化你的代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014686399/article/details/82348822

前言

一般在描述一个实物的时候,都会有set,get,del这三个方法,于是我们就会有下面的代码:

"""描述颜色的类"""


class OldColor(object):

    def __init__(self):
        # 颜色列表
        self.color_list = []

    def set_color(self, name):
        """增加颜色

        用来给颜色列表添加元素
        """
        pass

    def get_color(self):
        """得到颜色

        用来获取颜色列表
        """
        pass

    def del_color(self):
        """删除颜色

        用来清空颜色列表
        """
        pass

这样写呢,没啥毛病,但是现在有更便捷的方法供你选用了

property

# -*- coding: utf-8 -*-


class NewColor(object):

    def __init__(self):
        # 颜色列表
        self.color_list=[]

    @property
    def colors(self):
        """返回颜色列表

        返回self.color_list
        """
        return self.color_list

    @colors.setter
    def colors(self, name):
        """添加颜色

        添加颜色到color_list
        """
        self.color_list.append(name)

    @colors.deleter
    def colors(self):
        """清空颜色

        清空颜色列表;
        此处也可以是 del self.color_list,如果这样的话,就不能继续添加颜色了
        """
        self.color_list = []


if __name__ == "__main__":
    color_obj = NewColor()
    print("现在的颜色是: ", color_obj.colors)
    color_obj.colors = "green"
    color_obj.colors = "red"
    print("现在的颜色是: ", color_obj.colors)
    del color_obj.colors
    print("现在的颜色是: ", color_obj.colors)

deleter用于描述删除对象实例,所以该方法不能添加参数
运行结果:

现在的颜色是:  []
现在的颜色是:  ['green', 'red']
现在的颜色是:  []

先写到这里了,如果有问题请加入qq群630300475,大家一起聊一下

猜你喜欢

转载自blog.csdn.net/u014686399/article/details/82348822