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 31 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
python实现连续图文识别
Dec 18 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
Python的缺点和劣势分析
Nov 19 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Python更新所有已安装包的操作
Feb 13 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
Pandas的数据过滤实现
Jan 15 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 #Python
pandas进行数据输入和输出的方法详解
Mar 23 #Python
基于Python编写简易版的天天跑酷游戏的示例代码
Python中的嵌套循环详情
Mar 23 #Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
You might like
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
[20:30]职业巡回赛回顾
2018/08/09 DOTA
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
tensorboard显示空白的解决
2020/02/15 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
经济系大学生求职信
2013/10/01 职场文书
元旦晚会邀请函
2014/01/27 职场文书
关于旷工的检讨书
2014/02/02 职场文书
八年级语文教学反思
2014/02/11 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书