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列表与元组详解实例
Nov 01 Python
Python实现过滤单个Android程序日志脚本分享
Jan 16 Python
用python写的一个wordpress的采集程序
Feb 27 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
pytorch多GPU并行运算的实现
Sep 27 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
pytorch实现加载保存查看checkpoint文件
Jul 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
中国的第一台收音机
2021/03/01 无线电
PHP初学者头疼问题总结
2006/10/09 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python tkinter实现屏保程序
2019/07/30 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
python中upper是做什么用的
2020/07/20 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
XML文档面试题
2015/08/05 面试题
电气自动化自荐信
2013/10/10 职场文书
市场营销毕业生自荐信
2013/11/23 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
开业典礼主持词
2014/03/21 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
工会积极分子个人总结
2015/03/03 职场文书
储备店长岗位职责
2015/04/14 职场文书
车间班组长竞聘书
2015/09/15 职场文书
MySQL学习之基础操作总结
2022/03/19 MySQL