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之变量和参数
Oct 10 Python
使用Python脚本生成随机IP的简单方法
Jul 30 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
python实现控制台打印的方法
Jan 12 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
利用python在excel中画图的实现方法
Mar 17 Python
PYcharm 激活方法(推荐)
Mar 23 Python
Python函数参数分类原理详解
May 28 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 Python
尝试使用Python爬取城市租房信息
Apr 12 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 #Python
pandas进行数据输入和输出的方法详解
Mar 23 #Python
基于Python编写简易版的天天跑酷游戏的示例代码
Python中的嵌套循环详情
Mar 23 #Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
You might like
4.与数据库的连接
2006/10/09 PHP
mysql limit查询优化分析
2008/11/12 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php中adodbzip类实例
2014/12/08 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
实用的简历自我评价
2014/03/06 职场文书
工作会议方案
2014/05/21 职场文书
运动会口号16字
2014/06/07 职场文书
七夕情人节促销方案
2014/06/07 职场文书
情人节单身感言
2015/08/03 职场文书
工程主管竞聘书
2015/09/15 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Redis keys命令的具体使用
2022/06/05 Redis