property也是一个类,@property成为属性函数,即可以将python定义的方法当做属性访问,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用:
·1、将方法转换为只读
·2、重新实现一个属性的设置和读取方法,可做边界判定
类的私有属性在类的外部是不能通过实例对象和类对象直接访问的
我们若要在类的外部进行访问和修改,就必须在类内提供非私有的方法接口才能实现上述操作,
上述代码虽然实现了在类外对类的私有属性进行访问和修改,但接口函数调用起来比较麻烦,能不能像操作属性一样对接口函数进行操作呢?property类就可以实现这一想法。
下面看几个关于借助property类的几个例子:
例1:
可以看出,此时property类是type类的一个对象,而money是property类的对象,m为Money类的对象,m.money = 120相当于重新设置了Money类__money这个私有属性,而print(m.money)相当于访问了Money类__money这个私有属性,上述代码中,money语句是Money类的一个类属性,通过实例对象m调用Money类的类属性money,便可以像操作属性一样来操作getMoney和setMoney两个接口函数,在类的外部访问并修改类的私有属性便方便了许多。
例2:
下面再看一个结合装饰器和property类实现类外访问并修改类的私有属性的例子:
上述代码用另一种借助装饰器和property函数的方法也实现了类外对类的私有属性进行访问和修改的功能。