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中的__slots__使用示例
Feb 26 Python
python类装饰器用法实例
Jun 04 Python
python中字符串前面加r的作用
Jun 04 Python
理解Python中的With语句
Mar 18 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
Django中自定义admin Xadmin的实现代码
Aug 09 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
python实现语音常用度量方法的代码详解
May 25 Python
实操Python爬取觅知网素材图片示例
Nov 27 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 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实现的生成静态HTML速度快类库
2007/03/31 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
PHP生成器简单实例
2015/05/13 PHP
PHP编写RESTful接口
2016/02/23 PHP
php判断目录存在的简单方法
2019/09/26 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
prototype class详解
2006/09/07 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
python3访问sina首页中文的处理方法
2014/02/24 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
python安装教程
2018/02/28 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Django model序列化为json的方法示例
2018/10/16 Python
详解Django配置优化方法
2019/11/18 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
高中毕业生生活的自我评价
2013/12/08 职场文书
大学计划书范文800字
2014/08/14 职场文书
德育标兵事迹材料
2014/08/24 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
Golang Web 框架Iris安装部署
2022/08/14 Python