python:get和set

简介:

java里面有一件事情很让人崩溃,就是通过类里面的public函数访问类的私有属性对外提供接口,从数据库里面读出来的字段包装成对象之后,最重要的一件事情就是赶紧把字段做成private的,然后开始写public的get和set方法。这个过程很麻烦,但是却很重要,小小的一对儿函数给程序员提供了无限的可能(这里可以来脑补一个程序员大战黑产的惨烈故事...),然而,这种东西也确实很烦人,假如你反射了一个有几十个字段做属性的对象,这一堆get和set可是着实叫人抓狂,有些IDE甚至提供了自动生成get/set方法的功能(比如eclipse家族)。。。

那么python里面要怎样处理这种情况呢?

先来看看最土的办法:

class Test:
    def __init__(self):
        self.__key='init'

    def get_key(self):
        return self.__key

    def set_key(self,key):
        self.__key=key

看起来跟java没什么两样嘛......

然后注意,我要变型了:

class Student():

    def __init__(self,name,age):
        self.__name=name
        self.__age=age

    @property
    def name(self):
        print('reading name')
        return self.__name

    @name.setter
    def name(self,name):
        print('setting name')
        self.__name=name

    @property
    def age(self):
        print('reading age')
        return self.__age

    @age.setter
    def age(self, age):
        print('setting age')
        self.__age = age

    @age.deleter
    def age(self):
        print('deleting age')
        del self.__age

    def __str__(self):
        return '姓名 '+self.__name+'年龄'+str(self.__age)


def my_print(obj):
    print('-'*13)
    print(obj)
    print('-'*13)


if __name__ == '__main__':
    stu = Student('小明',18)
    my_print(stu)
    my_print(str(stu.name)+'\n'+str(stu.age))
    stu.age = 20
    stu.name = '小强'
    my_print(stu)
    '''
    #这个可以调deleter,打开注释跑跑看,也很有趣
    del stu.age
    my_print(stu)
    '''

结果是这个样子:

-------------
姓名 小明年龄18
-------------
reading name
reading age
-------------
小明
18
-------------
setting age
setting name
-------------
姓名 小强年龄20
-------------

Process finished with exit code 0

其实嘛,就是@property的使用喽~(注意看那个被我注释掉的del,这个很好玩,调的是deleter)

这里节省的就是你调用getter和setter的时间,一个点就调出来了。

目录
相关文章
|
5天前
|
存储 Python
Python多个set中的交集
Python多个set中的交集
10 1
|
6天前
|
C#
SET访问器和GET访问器
SET访问器和GET访问器
18 2
|
28天前
|
数据可视化 数据挖掘 Python
告别枯燥数字,拥抱视觉盛宴!Python 数据分析中的数据可视化艺术,你 get 了吗?
在数据驱动时代,数据分析至关重要,但单纯依赖数据表格难以揭示其背后的洞见。这时,数据可视化便彰显出其重要性,尤其借助 Python 的强大工具如 Matplotlib、Seaborn 和 Plotly 等,可将数据转化为直观的图形。Matplotlib 提供高度定制的图表,Seaborn 则简化了图表美化过程。通过折线图、散点图、箱线图、小提琴图及热力图等多种图表形式,我们可以更深入地理解数据分布与关系,有效传达信息并支持决策制定。数据可视化不仅是一门技术,更是讲述数据故事的艺术。
44 3
|
20天前
|
存储 数据处理 Python
Python中的Set集合:高效数据处理的利器
Python中的Set集合:高效数据处理的利器
25 0
|
20天前
|
JSON JavaScript 前端开发
借助Python神器,快速get上市公司财务数据
借助Python神器,快速get上市公司财务数据
24 0
|
2月前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
2月前
|
Python
python中set和frozenset方法和区别
python中set和frozenset方法和区别
|
2月前
|
API
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
|
2月前
|
Python
【Azure Developer】Python – Get Access Token by Azure Identity in China Azure Environment
【Azure Developer】Python – Get Access Token by Azure Identity in China Azure Environment
|
2月前
|
JavaScript 前端开发 Python
成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.
这篇文章分享了作者在运行前端Vue项目时遇到的关于Python执行环境的问题和解决方法。问题是由于找不到Python可执行文件导致的编译错误,解决方法包括安装编译环境、卸载并重新安装出现问题的`node-sass`包,并重新执行`npm install`和`npm run dev`。
成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.