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 02 Python
python实现封装得到virustotal扫描结果
Oct 05 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
python语言元素知识点详解
May 15 Python
python批量修改ssh密码的实现
Aug 08 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
python读取yaml文件后修改写入本地实例
Apr 27 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
实操Python爬取觅知网素材图片示例
Nov 27 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 session 检测和注销
2009/03/16 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
PHP页面中文乱码分析
2013/10/29 PHP
php curl_init函数用法
2014/01/31 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
JS关键字变色实现思路及代码
2013/02/21 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
django 多数据库配置教程
2018/05/30 Python
python安装twisted的问题解析
2018/08/21 Python
python3 读取Excel表格中的数据
2018/10/16 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
python 回溯法模板详解
2020/02/26 Python
Python 在局部变量域中执行代码
2020/08/07 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
本科生详细的自我评价
2013/09/19 职场文书
松材线虫病防治方案
2014/06/15 职场文书
开发房地产协议书
2014/09/14 职场文书
护士个人年终总结
2015/02/13 职场文书
工作年限证明模板
2015/06/15 职场文书
欢迎新生标语2015
2015/07/16 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL