继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 property

2882716
关注TA
已关注
手记 70
粉丝 0
获赞 0

Python 的内置函数 property() 是一个强大的工具,用于创建和管理类的属性访问。它允许开发者以更优雅的方式控制属性的获取(get)、设置(set)和删除(delete)操作,实现数据封装和验证。

基本用法

property() 函数的基本语法是:

property(fget=None, fset=None, fdel=None, doc=None)

其中:

  • fget:获取属性值的函数
  • fset:设置属性值的函数
  • fdel:删除属性的函数
  • doc:属性的文档字符串

使用示例

class Person:
    def __init__(self, name):
        self._name = name  # 使用下划线前缀表示受保护的属性
    
    def get_name(self):
        print("Getting name")
        return self._name
    
    def set_name(self, value):
        print("Setting name")
        if not isinstance(value, str):
            raise ValueError("Name must be a string")
        self._name = value
    
    def del_name(self):
        print("Deleting name")
        del self._name
    
    name = property(get_name, set_name, del_name, "Name property")

装饰器语法

Python 还提供了更简洁的装饰器语法来使用 property:

class Person:
    def __init__(self, name):
        self._name = name
    
    @property
    def name(self):
        """Name property"""
        print("Getting name")
        return self._name
    
    @name.setter
    def name(self, value):
        print("Setting name")
        if not isinstance(value, str):
            raise ValueError("Name must be a string")
        self._name = value
    
    @name.deleter
    def name(self):
        print("Deleting name")
        del self._name

应用场景

  1. 数据验证:在设置属性值时进行类型检查或范围验证
  2. 计算属性:根据其他属性动态计算返回值
  3. 访问控制:实现只读或只写属性
  4. 延迟加载:在首次访问属性时才进行计算或加载
  5. API兼容性:在不改变外部接口的情况下修改内部实现

注意事项

  • 使用 property 会增加少量性能开销,但在大多数情况下可以忽略不计
  • 属性名不要与实例变量名相同,通常使用下划线前缀区分
  • 在继承体系中,property 可以被子类覆盖或扩展

通过合理使用 property,可以使代码更加清晰、安全,同时保持良好的封装性。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP