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中Django发送带图片和附件的邮件
Mar 31 Python
python实现BackPropagation算法
Dec 14 Python
Django后台admin的使用详解
Jul 08 Python
Django模板语言 Tags使用详解
Sep 09 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 Python
pandas抽取行列数据的几种方法
Dec 13 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
Django利用AJAX技术实现博文实时搜索
May 06 Python
微信小程序调用python模型
Apr 21 Python
python计算列表元素与乘积详情
Aug 05 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 #Python
pandas进行数据输入和输出的方法详解
Mar 23 #Python
基于Python编写简易版的天天跑酷游戏的示例代码
Python中的嵌套循环详情
Mar 23 #Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
You might like
动态新闻发布的实现及其技巧
2006/10/09 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
javascript 写类方式之五
2009/07/05 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
python实现在sqlite动态创建表的方法
2015/05/08 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
一道Delphi面试题
2016/10/28 面试题
教师求职信范文分享
2013/12/27 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
先进党组织事迹材料
2014/12/26 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书