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入门教程
Feb 08 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Python常用库推荐
Dec 04 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
python读取文件名并改名字的实例
Jan 07 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
Python queue队列原理与应用案例分析
Sep 27 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Python selenium抓取虎牙短视频代码实例
Mar 02 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 #Python
pandas进行数据输入和输出的方法详解
Mar 23 #Python
基于Python编写简易版的天天跑酷游戏的示例代码
Python中的嵌套循环详情
Mar 23 #Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
9个经典的PHP代码片段分享
2014/12/18 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
原生js实现购物车功能
2020/09/23 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python常见数据类型转换操作示例
2019/05/08 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
python调用私有属性的方法总结
2020/07/24 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
农田水利实习自我鉴定
2013/09/19 职场文书
母亲节演讲稿
2014/05/27 职场文书
给校长的一封检讨书
2014/09/20 职场文书
公务员个人总结
2015/02/12 职场文书
师德培训心得体会2016
2016/01/09 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫