property装饰器 | Python从入门到精通:高阶篇之二十八

简介: 本节介绍了property装饰器的用法,将一个get方法,转换为对象的属性,添加为property装饰器以后,我们就可以像调用属性一样使用get方法。

隐藏类中的属性 | Python从入门到精通:高阶篇之二十七

property装饰器

class Person:
    def __init__(self,name):
        self._name = name

    def name(self):
        print('get方法执行了~~~')
        return self._name

p = Person('猪八戒')

print(p.name())

执行结果:

image.png

此时我们来添加一个property装饰器

class Person:
    def __init__(self,name):
        self._name = name
  
    @property 
    def name(self):
        print('get方法执行了~~~')
        return self._name

p = Person('猪八戒')

print(p.name)

执行结果:

image.png
image.png

此时调用p.name就相当于在调用get方法。
property装饰器,用来将一个get方法,转换为对象的属性,添加为property装饰器以后,我们就可以像调用属性一样使用get方法。
直接修改name:

p.name = '孙悟空'

执行结果:

image.png

因为只提供了get方法而没有set方法,所以不能修改值。
此时需要提供set方法进行修改。
使用property装饰的方法,必须和属性名是一样的。
setter方法的装饰器:@属性名.setter。

class Person:
    def __init__(self,name):
        self._name = name

    @property 
    def name(self):
        print('get方法执行了~~~')
        return self._name

    @name.setter    
    def name(self , name):
        print('setter方法调用了')
        self._name = name        

p = Person('猪八戒')

print(p.name)

执行结果:

image.png

我们再来添加一个age属性。

class Person:
    def __init__(self,name,age):
        self._name = name
        self._age = age

    @property 
    def name(self):
        print('get方法执行了~~~')
        return self._name

    @name.setter    
    def name(self , name):
        print('setter方法调用了')
        self._name = name      
 
    @property
    def age(self):
        return self._age

    @age.setter    
    def age(self , age):
        self._age = age   

p = Person('猪八戒',18)
p.name = '孙悟空'

print(p.name,p.age)

执行结果:

image.png

也可以进行修改:

p.age = 28

执行结果:

image.png

只有set,没有get,程序会出错。get是必须的。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
3月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
495 7
|
4月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
438 1
|
3月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
287 100
|
4月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
298 101
|
3月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
173 88
|
4月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
242 99
|
4月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
214 98
|
4月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
4月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
3月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通

推荐镜像

更多