首页 > 编程语言 >python中的Getter 和 Setter

python中的Getter 和 Setter

时间:2023-10-25 17:58:04浏览次数:38  
标签:property name python self Getter getter Setter 方法 setter

目录

1、描述

2、使用@property实现getter方法

3、使用@.setter实现setter方法

4、使用getter和setter方法访问私有变量


1、描述

@property 可以将一个方法的调用方式变成“属性调用”。
@property 主要用于帮助我们处理属性的读操作、写操作。

在Python中,我们可以使用@property@<attribute_name>.setter装饰器来实现getter和setter方法

2、使用@property实现getter方

        使用@property装饰器可以将一个方法转换为只读属性。例如,如果我们有一个类Person,它具有name属性,我们可以定义一个getter方法来访问它:

  1. class Person:
  2. def __init__(self, name):
  3. self._name = name
  4. @property
  5. def name(self):
  6. return self._name
  7. p = Person("Alice")
  8. print(p.name) # 输出 "Alice"

        在上面的示例中,@property装饰器将name方法转换为只读属性,它可以像访问类的属性一样访问name方法。

3、使用@<attribute_name>.setter实现setter方法

使用@<attribute_name>.setter装饰器可以将一个方法转换为可写属性的setter方法。例如,如果我们要为Person类的name属性定义一个setter方法,我们可以这样做:

  1. class Person:
  2. def __init__(self, name):
  3. self._name = name
  4. @property
  5. def name(self):
  6. return self._name
  7. @name.setter
  8. def name(self, value):
  9. self._name = value
  10. p = Person("Alice")
  11. print(p.name) # 输出 "Alice"
  12. p.name = "Bob"
  13. print(p.name) # 输出 "Bob"

在上面的示例中,@name.setter装饰器定义了一个setter方法,它将给定的值分配给name属性。注意,在定义setter方法时,方法名称必须与只读属性的名称相同,并且应该在定义getter方法之后。

4、使用getter和setter方法访问私有变量

        Python没有真正的私有变量,但是我们可以使用以下约定将变量定义为私有变量:使用一个下划线_将变量名称前缀。虽然这不会完全阻止从外部访问该变量,但是这是一种常用的约定,告诉其他程序员不应该直接访问该变量。

        在这种情况下,我们可以使用getter和setter方法来访问这些变量。以下是一个使用getter和setter方法访问私有变量的示例:

        私有属性“_“下划线和“__“双下划线的区别

  1. class Person:
  2. def __init__(self, name):
  3. self._name = name
  4. def get_name(self):
  5. return self._name
  6. def set_name(self, value):
  7. self._name = value
  8. p = Person("Alice")
  9. print(p.get_name()) # 输出 "Alice"
  10. p.set_name("Bob")
  11. print(p.get_name()) # 输出 "Bob"

        在上面的示例中,我们定义了一个私有变量_name,并使用get_name()set_name()方法来访问它。请注意,getter和setter方法名称与私有变量名称不同,这是为了遵循Python的变量名称约定。

标签:property,name,python,self,Getter,getter,Setter,方法,setter
From: https://www.cnblogs.com/clark1990/p/17787794.html

相关文章

  • 软件测试|Python数据可视化神器——pyecharts教程(十)
    使用pyecharts绘制漏斗图简介漏斗图(FunnelChart)是一种用于可视化数据流程或转化率的图表类型。它通常由一系列阶段组成,每个阶段都有一个名称和一个值,表示在该阶段的转化量或数据流程的进展情况。漏斗图的名称来源于其外观,类似于实际的漏斗形状,它的顶部较宽,底部较窄,符合数据逐渐减......
  • Python - 单元测试
    总结 一、如何进行单元测试注意点:importunittest需要创建一个类TestSort,继承类‘unittest.TestCase’然后,在这个类TestSort中定义相应的测试函数test_sort(),进行测试。注意,测试函数要以‘test’开头而测试函数的内部,通常使用assertEqual()、assertTrue()、assertFalse......
  • python 抓取优财网Libor利率数据,并使用BeautifulSoup解析
    需求背景:需求是用程序抓取优财网Libor查询伦敦银行同业拆借利率-数据中心-优财网-优财金融数据金融资讯门户官方网站-UCAI123.COM Libor数据,USD的实现思路:没找到优财网的开放API,只能通过读取网页数据,用BeautifulSoup来解析数据,至于为啥不用pandas来解析,是因为pandas适合解析有......
  • 《流畅的Python》 读书笔记 第5章 一等函数 20231025
    第5章一等函数第四章相对偏僻,但时间上一样要花我很久,就先跳过了,回头再补。而这个第5章节是非常重要的。只是最近工作有点忙,我读的越来越慢了~继续坚持吧。在Python中,所有函数都是一等对象,整数、字符串和字典都是一等对象(注:first-classobject)要成为一等对象,需要满足......
  • python练习.10
    问:计算1**1+2**2+3**3+...+n**n#方法一su=0x=int(input("请输入你想输入的值:"))foriinrange(1,x+1):su+=i**iprint(f"最后的值为:{su}")#方法二defAyue(n):returnn**nm=int(input("请输入你想要计算的值:"))x=0i=1while(i<=m):......
  • python练习.11
    问:让用户输入值,值中的a用*代替x=str(input("请输入你的值:"))if"a"notinx:print(x)else:print(x.replace('a','*')) ......
  • python练习.9
    问:计算100以内自然数中偶数的和#方法一s=0foriinrange(101):ifi%2==0:s=s+iprint(s)#方法二a=[]foriinrange(101):ifi%2==0:a.append(i)print(sum(a)) ......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-22-处理select下拉框-上篇
    1.简介在实际自动化测试过程中,我们也避免不了会遇到下拉框选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助。今天,我们讲下playwright的下拉框怎么处理,在使用selenium定位的过程中,我们可以选择使用selenium的Select类定位操作选择框......
  • Python概述
    1.1Python简介Python的英文原意为“蟒蛇”,它的诞生是极具戏剧性的。据荷兰人GuidovanRossum(简称Guido)的白述记栽,Python语言是他在圣诞节期间为了打发时间开发出来的。之所以选择Python作为该编程语言的名字,是因为他是一个名为MontyPython的戏剧团体的忠实粉丝。从整体上看,P......
  • 解决pycharm中Python console显示中文乱码
    找了很多方法,以下方法解决了问题:第一步:file—settings,在搜索框搜索console,找到Pythonconsole第二步:在右侧Environmentvariables一栏输入PYTHONIOENCODING=UTF-8第三步:在最下面的Startingscript里,最后添加一行代码:importos;os.system('chcp65001')第四部:重启pythonco......