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统计列表中的重复项出现的次数的方法
Aug 18 Python
Python常用内置函数总结
Feb 08 Python
在Python中操作时间之tzset()方法的使用教程
May 22 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
Python 2/3下处理cjk编码的zip文件的方法
Apr 26 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
Python基于pip实现离线打包过程详解
May 15 Python
Python更改pip镜像源的方法示例
Dec 01 Python
Python 多线程之threading 模块的使用
Apr 14 Python
Python音乐爬虫完美绕过反爬
Aug 30 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的autoload机制的实现解析
2012/09/15 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
详解如何让Express支持async/await
2017/10/09 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
Python中逗号的三种作用实例分析
2015/06/08 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
mac下如何将python2.7改为python3
2018/07/13 Python
python实现文本界面网络聊天室
2018/12/12 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
印尼购物网站:iLOTTE
2019/10/16 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
更夫岗位责任制
2014/02/11 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
岗位职责风险点
2014/03/12 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
2014年工程工作总结
2014/11/25 职场文书
如何写辞职书
2015/02/26 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript