zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    单例类
    UITableView汇总
    JVM虚拟机——垃圾收集算法
    集合框架 HashMap 的扩容机制, ConcurrnetHashMap 的原理
    java判断两个单链表是否相交
    java中Comparator 和 Comparable的区别
    String getProperty(String key, String def)
    JAVA 单步调试快捷键
    Stanford Word Segmenter使用
    使用ifstream和getline读取文件内容[c++]
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/10964083.html
Copyright © 2011-2022 走看看