• Python 基础之面向对象之装饰器@property


    一.定义

    装饰器@property
    可以把方法变成属性使用
    作用: 控制类内成员的获取 设置 删除
    获取 @property
    设置 @自定义名.setter
    删除 @自定义名.deleter

    二.具体实现

    1.方法一

    class MyClass():
        def __init__(self,name):
            self.name = name

        #获取
        @property
        def username(self):
            return self.name

        #设置
        @username.setter
        def username(self,val):
            self.name = val
    #删除
        @username.deleter
        def username(self):
            del self.name
    obj = MyClass("ONE")
    # 获取
    print(obj.username)

    # 设置
    obj.username = "two"
    print(obj.username)

    # 删除 del 调用删除相关的方法
    del obj.username
    # print(obj.username)
    =============================

    2.方法二

    class MyClass2():
        def __init__(self, name):
            self.name = name

        # 获取值的方法
        def get_usrname(self):
            return self.name

        # 设置值的方法
        def set_username(self, val):
            self.name = val

        #删除值的方法
        def del_username(self):
            del self.name

        # 在类加载的时候,自动把这些方法当成函数进行传递,不是在调用时出发的
        # property接收三个参数,必须按照:
        # (1)获取值的方法
        # (2)设置值的方法
        # (3)删除值的方法
        username = property(get_usrname, set_username, del_username)
        address = property(get_usrname, set_username, del_username)

    print("=======================")
    obj = MyClass2("Three")
    #获取当前username
    print(obj.username)
    #设置值
    obj.username = "four"
    #获取值
    print(obj.username)

    #删除值
    del obj.username
    #print(obj.username)

    obj.address = "China"
    print(obj.address)
    del obj.address

  • 相关阅读:
    vim配置文件
    NGUI屏幕自适应解决方案
    配置java环境
    Ignore files which are already versioned
    Unity3D TestTool Part _1
    c# 语法
    Application.persistentDataPath 的一个小坑
    Unity3D Log 收集机制
    Android 问题流水总结
    Open Phone, SMS, Email, Skype and Browser apps of Android in Unity3d
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/10964083.html
Copyright © 2020-2023  润新知