第107课时: 类: @property装饰器get 和 set方法
@property装饰器:
作用:
可以将一个方法的调用方式变成 “属性调用”。 用于给属性增加对应的 getter 和 setter 的方法.
(数据读取、和数据设置)
class man:
@property
def say(self):
print('nb')
return 1000
e1 = man()
nb
1000
可以看到,say是一个方法。但是调用时却是按照实例属性的格式调用的。 对象名.方法名
但是注意,这个不是该实例对象的实例属性,不能进行赋值操作。
class man:
@property
def say(self):
print('nb')
return 1000
e1 = man()
e1.say=110
报错!!!
传统方式(类方法) 得到、设置 实例属性:
class man:
def __init__(self,name,salary):
self.__name= name
self.__salary= salary
def get_salary(self):
return self.__salary
def set_salary(self,newsalary):
if 1000<newsalary<50000:
self.__salary= newsalary
else:
print('输入的钱错误。应该在1000-50000')
e1 = man('wlz',2000)
print(e1.get_salary())
e1.set_salary(5000)
print(e1.get_salary())
2000
5000
由于实例对象用的是私有属性的格式来写,所以无法直接调用,但是可以用装饰器的方法来实现。
class man:
def __init__(self,name,salary):
self.__name= name
self.__salary= salary
@property
def salary(self):
return self.__salary
@salary.setter
def salary(self,newsalary):
if 1000<newsalary<50000:
self.__salary= newsalary
else:
print('输入的钱错误。应该在1000-50000')
e1 = man('wlz',2000)
print(e1.salary)
e1.salary=5000
print(e1.salary)
2000
5000
可以到看调用变得更加简便直观了。
print(e1.salary) 读取数据
e1.salary=5000 改写数据。