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 10 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
python中map的基本用法示例
Sep 10 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
对python for 文件指定行读写操作详解
Dec 29 Python
深度辨析Python的eval()与exec()的方法
Mar 26 Python
windows下安装Python虚拟环境virtualenvwrapper-win
Jun 14 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
详解使用Python下载文件的几种方法
Oct 13 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 #Python
pandas进行数据输入和输出的方法详解
Mar 23 #Python
基于Python编写简易版的天天跑酷游戏的示例代码
Python中的嵌套循环详情
Mar 23 #Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
python实现逆波兰计算表达式实例详解
2015/05/06 Python
Python 装饰器深入理解
2017/03/16 Python
Python实现的矩阵类实例
2017/08/22 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python中的for循环
2018/09/28 Python
Python中@property的理解和使用示例
2019/06/11 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
python 对xml解析的示例
2021/02/27 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
经典洗发水广告词
2014/03/13 职场文书
2014年销售部工作总结
2014/12/01 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python