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通过90行代码搭建一个音乐搜索工具
Jul 29 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
python绘制玫瑰的实现代码
Mar 02 Python
详解python中groupby函数通俗易懂
May 14 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
Python关于OS文件目录处理的实例分享
May 23 Python
实战Python爬虫爬取酷我音乐
Apr 11 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 xml文件操作实现代码(二)
2009/03/20 PHP
PHP 各种排序算法实现代码
2009/08/20 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python的多维空数组赋值方法
2018/04/13 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
采购人员的个人自我评价
2014/01/16 职场文书
先进个人事迹材料
2014/01/25 职场文书
高校教师自荐信范文
2014/03/13 职场文书
小学教师评语大全
2014/04/23 职场文书
派出所所长先进事迹
2014/05/19 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
投诉书格式范本
2015/07/02 职场文书
2015年暑假生活总结
2015/07/13 职场文书