python中的getter与setter你了解吗


Posted in Python onMarch 24, 2022

前言

因为java开发的习惯,想要在python开发中使用类似JavaBean的结构。

复制型编写

在python可以直接结合java中的编写习惯编写getter和setter方法。下方是一个示例:

class  DataBean:
	"""bean类"""
	def __init__(self):
		"""构造方法"""
		self.username: str = ""
		self.password: str = ""
	def set_username(self, username: str):
		"""设置用户名"""
		self.username = username
	def set_password(self, password: str):
		"""设置密码"""
		self.password = password
	def get_username(self):
		"""获取用户名"""
		return self.username
	def get_password(self):
		""""获取密码"""
		return self.password

这是结合java的习惯与python类的使用写出的getter和setter结构,当然也可以完全按照java中的写法,参考下方示例:

class  DataBean:
	"""bean类"""
	# 用户名
	username: str = ""
	# 密码
	password: str = ""
	def set_username(self, username: str):
		"""设置用户名"""
		self.username = username
	def set_password(self, password: str):
		"""设置密码"""
		self.password = password
	def get_username(self):
		"""获取用户名"""
		return self.username
	def get_password(self):
		""""获取密码"""
		return self.password

其实就是将构造方法中通过self定义的变量提取出来,效果是一致的。

使用python的装饰器

在python内置的装饰器中,@property和@XXX.setter是针对于getter和setter方法的不二之选。

当一个方法(函数)的最终目的是返回一个值时,可以@property装饰该方法(因为java的使用习惯,我更想称之为注解),这样就可以达成getter方法。

当在一个方法的上方使用XXX.setter装饰时,代表可以直接通过类实例对象名称.变量名为其变量赋值,其中XXX代表变量名同时也是方法(函数)名称,具体可以看下方示例:

class  DataBean:
	"""bean类"""
	# 替代setter方法
	@username.setter
	def username(self, username: str):
		"""设置用户名"""
		self.username = username
	@password.setter
	def password(self, password: str):
		"""设置密码"""
		self.password = password
	# 替代getter方法
	@property
	def username(self):
		"""获取用户名"""
		return self.username
	@property
	def password(self):
		""""获取密码"""
		return self.password
# 测试
data_bean = DataBean()
# 直接赋值
date_bean.username = "123"
print(data_bean.username)

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

Python 相关文章推荐
使用python实现扫描端口示例
Mar 29 Python
Python中取整的几种方法小结
Jan 06 Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 Python
Python实现按中文排序的方法示例
Apr 25 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
python一键去抖音视频水印工具
Sep 14 Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
python实现井字棋小游戏
Mar 04 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 #Python
pandas进行数据输入和输出的方法详解
Mar 23 #Python
基于Python编写简易版的天天跑酷游戏的示例代码
Python中的嵌套循环详情
Mar 23 #Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
You might like
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
初探nodeJS
2017/01/24 NodeJs
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Python实现截屏的函数
2015/07/25 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
四年级学生评语大全
2014/04/21 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
铁路安全反思材料
2014/12/24 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
电力培训学习心得体会
2016/01/11 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python