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正则表达式match和search用法实例
Mar 26 Python
python实现定时播放mp3
Mar 29 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
Python用模块pytz来转换时区
Aug 19 Python
Python中表示字符串的三种方法
Sep 06 Python
Python实现的排列组合计算操作示例
Oct 13 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
python PIL/cv2/base64相互转换实例
Jan 09 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 #Python
pandas进行数据输入和输出的方法详解
Mar 23 #Python
基于Python编写简易版的天天跑酷游戏的示例代码
Python中的嵌套循环详情
Mar 23 #Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
You might like
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
用文本作数据处理
2006/10/09 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
PHP 类与构造函数解析
2017/02/06 PHP
基于jquery的无刷新分页技术
2011/06/11 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
python实现的系统实用log类实例
2015/06/30 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
python 5个实用的技巧
2020/09/27 Python
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
改革共识倡议书
2014/08/29 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
西柏坡导游词
2015/02/05 职场文书
班主任自我评价范文
2015/03/11 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python