python @property 装饰器

@property 可以将一个方法的调用方式变成 “属性调用”。

为什么用 property  : 希望将访问私有属性和普通属性的方式变得一致

与property相关的两个装饰器:

  setter : 用点语法 给属性赋值时触发 

  deleter: 用点语法删除属性时触发

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

    def get_salary(self):
        return self.__salary

    def set_salary(self,salary):
        if 1000< salary < 50000:
            self.__salary = salary
        else:
            print('录入错误!')

S1 = Student('小明', 18)
print(S1.get_salary())
S1.set_salary(2000)
print(S1.get_salary())

 装饰器在不修改原方法代码,添加新的功能

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

    # 添加装饰器
    @property
    def salary(self):
        return self.__salary

    # 先执行装饰器的方法(在原salary方法添加if判断)
    @salary.setter
    def salary(self,salary):
        if 1000< salary < 50000:
            self.__salary = salary
        else:
            print('录入错误!')

S1 = Student('小明', 18)

print(S1.salary)

S1.salary = 2000

print(S1.salary)

猜你喜欢

转载自blog.csdn.net/qq_26086231/article/details/121461170
今日推荐