Python学习之-Property详解

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

前言:

在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天Aileft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值