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使用nntp读取新闻组内容的方法
May 08 Python
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
Keras搭建自编码器操作
Jul 03 Python
python redis存入字典序列化存储教程
Jul 16 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 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 $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
Jquery性能优化详解
2014/05/15 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
django主动抛出403异常的方法详解
2019/01/04 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
护理毕业生自荐信范文
2013/12/22 职场文书
车间统计员岗位职责
2014/01/05 职场文书
终止劳动合同协议书
2014/04/14 职场文书
行政求职信
2014/07/04 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
Vue如何清空对象
2022/03/03 Vue.js