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实现telnet客户端的方法
Apr 15 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
python 图片去噪的方法示例
Jul 09 Python
python Django的web开发实例(入门)
Jul 31 Python
python 字段拆分详解
Dec 17 Python
基于matplotlib xticks用法详解
Apr 16 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
Pytorch可视化的几种实现方法
Jun 10 Python
Python中的套接字编程是什么?
Jun 21 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 syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python 函数返回值的示例代码
2019/03/11 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
2014年教师业务学习材料
2014/05/12 职场文书
保护环境倡议书范文
2014/05/13 职场文书
公司应聘求职信
2014/06/21 职场文书
六查六看剖析材料
2014/10/06 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
检讨书格式
2015/01/23 职场文书
考察邀请函范文
2015/01/31 职场文书
师范生见习自我总结
2015/06/23 职场文书
暑期工社会实践报告
2015/07/13 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
python文件目录操作之os模块
2021/05/08 Python
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android