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

  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/10964083.html
Copyright © 2011-2022 走看看