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天前
|
设计模式 Python
掌握Python中的装饰器
【10月更文挑战第34天】装饰器是Python中一种强大的工具,它允许我们在不修改原函数代码的情况下增加其功能。本文通过简单易懂的语言和实例,引导你理解装饰器的概念、种类及其应用,帮助你在编程实践中灵活使用这一高级特性。
|
2天前
|
Python
深入理解Python装饰器:从入门到实践####
本文旨在通过简明扼要的方式,为读者揭开Python装饰器的神秘面纱,从基本概念、工作原理到实际应用场景进行全面解析。不同于常规的摘要仅概述内容概要,本文将直接以一段精炼代码示例开篇,展示装饰器如何优雅地增强函数功能,激发读者探索兴趣,随后深入探讨其背后的机制与高级用法。 ####
25 11
|
2天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
1天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
1天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
3天前
|
设计模式 缓存 监控
Python中的装饰器:代码的魔法增强剂
在Python编程中,装饰器是一种强大而灵活的工具,它允许程序员在不修改函数或方法源代码的情况下增加额外的功能。本文将探讨装饰器的定义、工作原理以及如何通过自定义和标准库中的装饰器来优化代码结构和提高开发效率。通过实例演示,我们将深入了解装饰器的应用,包括日志记录、性能测量、事务处理等常见场景。此外,我们还将讨论装饰器的高级用法,如带参数的装饰器和类装饰器,为读者提供全面的装饰器使用指南。
|
1天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
1天前
|
测试技术 开发者 Python
探索Python中的装饰器:从基础到高级应用
【10月更文挑战第36天】装饰器在Python中是提升代码效率和可读性的利器,它们允许开发者在不改变原有函数定义的情况下增加额外的功能。本文将引导读者从理解装饰器的基本概念出发,通过实际代码示例,逐步深入到更复杂的应用场景,如装饰器堆叠和带参数的装饰器。我们将一起探索如何利用这一强大工具来优化我们的编码实践。
|
3天前
|
Python
深入浅出Python装饰器
【10月更文挑战第34天】在编程的世界里,我们常常需要扩展函数的功能,但又不想修改其源代码。Python装饰器的引入,就像是给函数穿上了一件魔法斗篷,让这一切变得可能。本文将带你领略装饰器的魔力,从基础概念到实际应用,一起探索这个强大的工具如何简化我们的代码并增加程序的可读性。
|
3天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
下一篇
无影云桌面