Python面向对象基础:对象属性管理与Setter/Getter实现

顾星河
顾星河
发布时间:2026-10-12| 2人浏览过
原创

在Python面向对象编程中,理解对象属性的存储机制与访问控制是基础且关键的一环。本文从对象与字典的相似性入手,解析__dict__的作用,并深入探讨如何通过自定义方法实现Setter和Getter,包括链式调用与读写合并的高级技巧。

对象属性的本质与存储

在Python中,类可以被视为一种类似字典的数据结构,而对象则是包含已赋值属性的实例。每个对象都通过内部的 __dict__ 字典来存放其数据。我们可以通过创建一个简单的类来观察这一机制。

class Person: pass

p = Person() # 构造对象
p.name = "longshuai" # 创建对象的属性name
p.age = 23   # 创建对象的属性age

上述代码中,我们直接为对象 p 赋予了 name 和 age 属性。这与字典的操作方式高度一致:

>>> d={}
>>> d["name"]="longshuai"
>>> d["age"]=23

>>> print(d["name"])
longshuai
>>> print(d["age"])
23

查看对象的 __dict__ 属性,可以直观地看到其内部存储的数据结构:

>>> p.__dict__
{'name': 'longshuai', 'age': 23}

初始化与类属性

虽然可以直接为对象赋值,但在实际开发中,通常通过定义 __init__() 方法来构造对象并初始化数据。此外,类属性(Class Attribute)与实例属性(Instance Attribute)有所区别。类属性存放在类的名称空间中,所有实例共享该属性,而实例属性则存储在各自的 __dict__ 中。

class Person:
 skin = "yellow" # 类属性
 def __init__(self,name,age):
  self.name = name # 实例属性
  self.age = age   # 实例属性

当实例化对象后,访问类属性可以通过 x.y 的方式直接获取:

>>> p = Person("longshuai",23)
>>> p.__dict__
{'name': 'longshuai', 'age': 23}
>>> p.skin
'yellow'

实现Setter与Getter

在面向对象设计中,Setter用于设置属性值,Getter用于获取属性值。我们可以通过定义普通方法来实现这一功能。以下是一个包含 set 和 get 方法的示例:

class Person:
 skin = "yellow"
 def __init__(self,name,age):
  self.name = name
  self.age = age
 def set(self,job):
  self.job = job
  return self
 def get(self):
  return self.name,self.age,self.job

使用示例如下:

>>> p = Person("longshuai",23)
>>> p.set("manager")
>>> name, age, job = p.get()
>>> print([name,age,job])
['longshuai', 23, 'manager']

链式调用技巧

如果 set 方法返回对象自身(return self),则可以实现方法的链式调用,使代码更加简洁:

>>> p = Person("longshuai",23)
>>> name,age,job = p.set("manager").get()

合并Setter与Getter

为了简化接口,有时需要将Setter和Getter合并为一个方法。其核心逻辑是通过判断参数是否存在来区分是调用Setter还是Getter。

def set_get_job(self, job=None):
 if job:
  self.job = job
 else:
  return self.job

在调用时:

p = Person("longshuai", 23)
p.set_get_job("manager")  # 给了参数,说明是setter
job = p.set_get_job()  # 没给参数,说明是getter

这种模式通过参数 job 的存在与否来动态决定行为,是Python中一种常见的属性封装技巧。以上就是Python面向对象基础中关于设置对象属性及实现Setter/Getter的详细内容,更多关于Python面向对象编程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。