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 13 Python
Python中functools模块函数解析
Mar 12 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
在python中画正态分布图像的实例
Jul 08 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
python命令 -u参数用法解析
Oct 24 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
python对一个数向上取整的实例方法
Jun 18 Python
python入门教程之基本算术运算符
Nov 13 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
Python 的 Socket 编程
2015/03/24 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
python 容器总结整理
2017/04/04 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
网络教育自我鉴定
2013/11/01 职场文书
安全技术说明书
2014/05/09 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
公路施工安全责任书
2015/05/08 职场文书
钢琴师观后感
2015/06/12 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP