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

  • 相关阅读:
    express开发实例
    node.js操作mongoDB数据库
    Mysql JDBC Url参数说明useUnicode=true&characterEncoding=UTF-8
    Hibernate 使用说明
    mysql 时间戳与日期格式的相互转换
    MOOC即Massive Open Online Course的缩写
    CentOS+Apache+php无法访问redis的解决方法
    CentOS 6.5下Redis安装详细步骤
    Linux进程基础
    CentOS如何查看端口是被哪个应用/进程占用
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/10964083.html
Copyright © 2011-2022 走看看