跳至主要內容

装饰器@property

刘春龙原创...小于 1 分钟Python教程文档

@property可以将一个方法的调用方式变成“属性调用(不加括号)”。

@property主要用于帮助我们处理属性的读操作、写操作。对于某一个属性,我们可以直接通过:emp1.salary = 30000

如上的操作读操作、写操作。但是,这种做法不安全。比如,我需要限制薪水必须为1-10000的数字。这时候,我们就需要通过使用装饰器@property来处理。

class Employee:
    age = 26
    __company = "WEB"

    def __init__(self, name, salary):
        self.name = name
        self.__salary = salary

    @property  # 相当于salary属性的getter方法
    def salary(self):
        print(f"月薪为:{self.__salary}")
        return self.__salary

    @salary.setter
    def salary(self, val):
        if 0 < val < 100000:
            self.__salary = val
        else:
            print("工资不合理")

p1 = Employee("小米", 8000)
print(p1._Employee__salary)  # 外部强行访问私有实例属性 8000
p1.salary  # 外部通过装饰器强行访问私有实例属性
p1.salary = 1000000   # 外部对私有实例属性赋值
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7