python中的Getter 和 Setter
目录
1、描述
@property 可以将一个方法的调用方式变成“属性调用”。
@property 主要用于帮助我们处理属性的读操作、写操作。
在Python中,我们可以使用
@property
和@<attribute_name>.setter
装饰器来实现getter和setter方法
2、使用@property实现getter方法
使用@property
装饰器可以将一个方法转换为只读属性。例如,如果我们有一个类Person
,它具有name
属性,我们可以定义一个getter方法来访问它:
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
p = Person("Alice")
print(p.name) # 输出 "Alice"
在上面的示例中,@property
装饰器将name
方法转换为只读属性,它可以像访问类的属性一样访问name
方法。
3、使用@<attribute_name>.setter实现setter方法
使用@<attribute_name>.setter
装饰器可以将一个方法转换为可写属性的setter方法。例如,如果我们要为Person
类的name
属性定义一个setter方法,我们可以这样做:
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
p = Person("Alice")
print(p.name) # 输出 "Alice"
p.name = "Bob"
print(p.name) # 输出 "Bob"
在上面的示例中,@name.setter
装饰器定义了一个setter方法,它将给定的值分配给name
属性。注意,在定义setter方法时,方法名称必须与只读属性的名称相同,并且应该在定义getter方法之后。
4、使用getter和setter方法访问私有变量
Python没有真正的私有变量,但是我们可以使用以下约定将变量定义为私有变量:使用一个下划线_
将变量名称前缀。虽然这不会完全阻止从外部访问该变量,但是这是一种常用的约定,告诉其他程序员不应该直接访问该变量。
在这种情况下,我们可以使用getter和setter方法来访问这些变量。以下是一个使用getter和setter方法访问私有变量的示例:
class Person:
def __init__(self, name):
self._name = name
def get_name(self):
return self._name
def set_name(self, value):
self._name = value
p = Person("Alice")
print(p.get_name()) # 输出 "Alice"
p.set_name("Bob")
print(p.get_name()) # 输出 "Bob"
在上面的示例中,我们定义了一个私有变量_name
,并使用get_name()
和set_name()
方法来访问它。请注意,getter和setter方法名称与私有变量名称不同,这是为了遵循Python的变量名称约定。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!