Python入门基础篇 No.75 —— @property装饰器_getter和setter方法
前生篇:私有属性和私有方法(实现封装)
后世篇:属性和方法命名总结_类编码风格
小白不看都能懂:Python之真功夫系列(全章)
前言
一、@property 装饰器
- @property 可以将一个方法的调用方式变成“属性调用”。下面是一个简单的示例,让大家体会一下这种转变:
代码演示:
# 简单测试@property
class Employee:
@property
def salary(self):
return 50000
emp1 = Employee()
print(emp1.salary) # 打印50000
print(type(emp1.salary)) # 打印<class 'int'>
# emp1.salary() # 报错:TypeError: 'int' object is not callable
# emp1.salary = 1000 # @property修饰的属性,如果没有加setter方法,则为只读属性。此处报错:AttributeError: can't set attribute
---------------------------------------
50000
<class 'int'>
- @property 主要用于帮助我们处理属性的读操作、写操作。对于某一个属性,我们可以直
接通过:
emp1.salary = 50000
- 如上的操作读操作、写操作。但是,这种做法不安全。比如,我需要限制薪水必须为 1-10000的数字。这时候,我们就需要通过 getter、setter 方法来处理。
代码演示:
# 测试@property
class Employee:
def __init__(self, name, salary):
self.name = name
self.__salary = salary
@property # 相当于salary属性的getter方法
def salary(self):
print("月薪为{0},年薪为{1}".format(self.__salary, (12 * self.__salary)))
return self.__salary
@salary.setter
def salary(self, salary): # 相当于salary属性的setter方法
if (0 < salary < 1000000):
self.__salary = salary
else:
print("薪水录入错误!只能在0-1000000之间")
emp1 = Employee('Offer', 100)
print(emp1.salary)
emp1.salary = -200
--------------------------------
月薪为100,年薪为1200
100
薪水录入错误!只能在0-1000000之间
总结
以上帮各位总结好了,收藏,关注即可查收。
前生篇:私有属性和私有方法(实现封装)
后世篇:属性和方法命名总结_类编码风格
小白不看都能懂:Python之真功夫系列(全章)
关注下方公众号,免费拿Python学习资料!!!