前言:
在Python中,property 是一种内置的装饰器,它可以将类的方法转换为属性,让你在不改变类接口的情况下添加额外的逻辑,如输入值的验证、取值的计算等。property 可以作为一种方式让你的类接口保持清晰且易于使用。
property 装饰器最常见的应用场景是将类的属性封装起来,提供getter 和 setter 方法。这种方式的原因是,你可以对属性赋值或者取值的代码进行控制,而不是直接暴露属性。
property 通常会按照下面这样的模式使用:
@property 装饰一个方法,定义属性名,该方法为属性的 “getter” 方法。
@<property_name>.setter 装饰一个方法,将其定义为同名属性的 “setter” 方法。
@<property_name>.deleter 装饰一个方法,将其定义为同名属性的 “deleter” 方法。
1 应用场景:
1.1 数据封装与保护
#!/usr/bin/env python
# coding=utf-8
"""
# @Time : 2024/4/12 23:00
# @Author : Summer
# @File : property_test.py
# @describe:
"""
class BankAccount:
def __init__(self, initial_balance=0.0):
self._balance = initial_balance # 初始化时将_balance设为初识余额
@property
def balance(self):
"""获取账户余额。"""
return self._balance
@balance.setter
def balance(self, value):
"""设置账户余额,拒绝直接设置。"""
raise ValueError("Cannot directly set balance; please use deposit() or withdraw() methods.")
def deposit(self, amount):
"""存款方法,只有金额是正数时才接受该交易。"""
if amount <= 0:
raise ValueError("Deposit amount must be positive.")
self._balance += amount
def withdraw(self, amount):
"""取款方法,只有余额充足且金额是正数时才接受该交易。"""
if amount <= 0:
raise ValueError("Withdrawal amount must be positive.")
if amount > self._balance

本文详细介绍了Python中property装饰器的使用,包括数据封装以保护私有变量、数据验证、计算属性的实现、懒加载以及与观察者模式的结合,展示了如何通过property实现更安全、高效和灵活的类设计。
最低0.47元/天 解锁文章
916

被折叠的 条评论
为什么被折叠?



