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

 

posted @ 2019-06-02 19:51  pycoder_hsz  阅读(390)  评论(0编辑  收藏  举报