首页 python基础教程 Python面向对象-私有属性实现只读功能
pay pay

Python面向对象-私有属性实现只读功能

日期: 2021年12月4日 04:11
栏目: python基础教程
阅读: 92
作者: python自学网

摘要: 我们在很多需求场景中都能遇到数据只读需求,这样的数据在类中一般被命名为只读属性,其实只读属性就是通过私有化属性间接的实现的,下面我们来演示一下。

我们在很多需求场景中都能遇到数据只读需求,这样的数据在类中一般被命名为只读属性,其实只读属性就是通过私有化属性间接的实现的,下面我们来演示一下。

一些在类的内部根据不同情况进行修改,但是对于外界来说不能做任何变动的属性叫做只读属性。只读属性一般是相对于实例化的对象而言,对象不能修改只读属性。

实现方法1:先私有化属性,然后通过方法公开读功能。

class Person:
    def __init__(self):
        self.name = 'Tom'
        self.__money = 100  # 先私有化属性

    def getMoney(self):  # 然后通过方法公开读功能
        return self.__money

p = Person()
print(p.getMoney())  # 通过方法调用读取属性

实现方法2:先私有化属性,然后通过装饰器来实现只读

class Person:
    def __init__(self):
        self.name = 'Tom'
        self.__money = 100  # 先私有化属性

    @property  # 通过装饰器property来实现只读,作用是把方法当做属性来使用
    def getMoney(self):
        return self.__money

p = Person()
print(p.getMoney)  # 把方法当做属性使用,直接读取
# p.getMoney = 99  # 这里是只读,无法修改

只读属性是为了数据安全,属性是一个名称,不建议大家把函数设置为属性名,因为属性和修改函数使用场景不同,最好不要暴露在外,比如取款机系统,用户看到存款余额是使用getMoney方法,当取款或者存款时,余额会发生变化,在内部调用setMoney方法.

目录
回顶部