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设计模式之访问者模式
Nov 18 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
Django中Forms的使用代码解析
Feb 10 Python
详解python3中zipfile模块用法
Jun 18 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
Python数据集切分实例
Dec 08 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
python实现每天自动签到领积分的示例代码
Aug 18 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版网站缓存加快打开速度的方法分享
2012/06/03 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
python在linux中输出带颜色的文字的方法
2014/06/19 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python subprocess模块常见用法分析
2018/06/12 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
python模拟斗地主发牌
2020/04/22 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
Linux内核产生并发的原因
2016/11/08 面试题
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
生活部的活动方案
2014/08/19 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
法人委托书范本
2014/09/15 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书