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