| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 【Python面向对象编程】第18篇 属性装饰器 -> 正文阅读 |
|
[Python知识库]【Python面向对象编程】第18篇 属性装饰器 |
本篇我们学习 Python 属性装饰器(@property)的原理。 属性装饰器在上一篇中,我们介绍了如何利用 property 类定义类的属性。property 类的调用语法如下:
以下代码定义了一个 Person 类包含两个属性 name 和 age:
使用 property 类定义 age 属性的 getter 方法:
property() 方法接受一个 getter 方法作为参数,返回一个 property 对象。 以下示例创建了一个 Person 类实例,通过实例获取 age 属性的值:
输出结果如下:
另外,我们也可以直接调用 Person 对象的 get_age() 方法:
也就是说,我们既可以利用 age 属性获取年龄,也可以通过 get_age() 方法获取年龄。这两种方式是不必要的重复,为了减少重复,我们可以将 get_age() 方法重命名为 age():
property() 方法接受一个可调用对象(age),同时返回一个可调用对象。因此它是一个装饰器。我们可以使用 @property 装饰器装饰 age() 方法:
通过使用 @property 装饰器,我们可以简化类的属性定义。 Setter 装饰器以下代码为 Person 类增加了一个 setter 方法(set_age),用于为 _age 属性赋值:
为了将 set_age 赋予 age 属性对象的 fset 参数,可以调用 age 属性对象的 setter() 方法:
setter() 方法接受一个可调用对象参数,同时返回另一个可调用对象(属性对象)。所以,我们可以使用 @age.setter 属性装饰器装饰 set_age() 方法:
现在我们可以将 set_age() 方法重命名为 age() 方法,并且在 __init__() 方法中使用 age 属性:
总结来说,我们可以使用装饰器创建属性:
在以上方式中,__attr 是私有属性,prop 是属性名。 以下示例使用 @property 装饰器为 Person 类创建了两个属性 name 和 age:
总结
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 17:36:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |