Python 从attribute到property详解

Python 从attribute到property详解

在Python中,对象的属性可以分为两种:attribute和property。attribute是对象中的数据成员,而property是通过一定的计算或方法获取的数据成员。

attribute

attribute是对象中的数据成员,直接访问得到的值就是attribute的值。

示例代码:

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

person = Person('Alice')
print(person.name) # 直接访问属性

输出结果为:Alice

property

property是通过一定的计算或方法获取的数据成员,使用property装饰器可以将方法转换为属性。

示例代码:

class Circle:
    def __init__(self, radius):
        self.radius = radius

    @property
    def area(self):
        return 3.14 * self.radius ** 2

circle = Circle(5)
print(circle.area) # 直接访问属性

输出结果为:78.5

上述示例中,area是一个方法,但使用@property装饰器后可以直接访问circle.area,就像访问attribute一样。

此外,可以使用@property装饰器定义只读属性,以及结合setter和deleter方法实现可读可写的属性。

示例代码:

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

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        self._name = value.title()

person = Person('alice')
print(person.name) # 直接访问属性

person.name = 'Bob'
print(person.name) # 直接访问属性

person._name = 'eve'
print(person.name) # 直接访问属性

del person.name
print(person.name) # 直接访问属性

输出结果为:

Alice
Bob
Eve
Traceback (most recent call last):
  File "test.py", line 18, in <module>
    print(person.name) # 直接访问属性
AttributeError: 'Person' object has no attribute '_name'

上述示例中,name是可读可写的属性,使用setter方法将传入的值转换为首字母大写的形式,使用deleter方法删除属性后再次访问会抛出AttributeError异常。

总结

Python中的attribute和property都是对象的数据成员,但property是能够进行一定计算或方法调用得到的值。使用@property装饰器可以将方法转换为属性, setter和deleter方法配合@property可实现可读可写的属性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 从attribute到property详解 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • 基于Python实现迪杰斯特拉和弗洛伊德算法

    基于Python实现迪杰斯特拉和弗洛伊德算法的完整攻略 迪杰斯特拉和弗洛伊德算法是两种常用的图论算法,用于求解最短路径问题。在Python中,可以使用networkx和numpy库实现迪杰斯特拉和弗洛伊德算法。本文将详细讲解Python实现迪杰斯特拉和弗洛伊德算法的整个攻略,包括算法原理、Python实现过程和示例。 算法原理 迪杰斯特拉算法 迪杰斯特拉算法…

    python 2023年5月14日
    00
  • Python爬虫练习汇总

    Python爬虫练习汇总攻略 Python爬虫是一种抓取网络数据的技术,也是现在比较热门的技术之一。学习Python爬虫,需要具备一定的编程基础和网络基础。下面是Python爬虫练习汇总攻略: 了解爬虫基础 在学习Python爬虫之前,需要先了解一些基础的概念或知识: 爬虫是什么?指的是通过网络来抓取网页数据的程序,可以获取各种网络数据,如HTML、XML、…

    python 2023年5月14日
    00
  • 如何在Python中使用PyODBC库连接Microsoft SQL Server数据库?

    以下是如何在Python中使用PyODBC库连接Microsoft SQL Server数据库的完整使用攻略,包括安装PyODBC库、连接Microsoft SQL Server数据库、执行查询语句等步骤。同时,提供了两个示例以便更好理解如何在Python中使用PyODBC库连接Microsoft SQL Server数据库。 步骤1:安装PyODBC库 在…

    python 2023年5月12日
    00
  • 如何在Python中更新MySQL数据库中的数据?

    以下是在Python中更新MySQL数据库中的数据的完整使用攻略。 使用MySQL数据库的前提条件 在使用Python连接MySQL数据库之前,确保已经安装了MySQL数据库,并已经创建使用数据库和表。同时,还需要安装Python的驱动程序,例如mysql-connector-python。 步骤1:导入模块 在Python中使用mysql.connecto…

    python 2023年5月12日
    00
  • 爬山算法简介和Python实现实例

    爬山算法简介和Python实现实例 爬山算法简介 爬山算法(Hill Climbing Algorithm)是一种简单且常用的启发式优化算法。该算法的基本思想是从当前解出发,每次搜索邻域中比当前解更优的解,直到达到一个局部最优解。 但是,爬山算法容易陷入局部最优解,并且不能保证找到全局最优解。因此,在实际应用中常常会利用多次随机化生成多个初始解,或者使用其他…

    python 2023年5月19日
    00
  • Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析

    下面我将详细讲解一下“Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析”的完整攻略。 1. os模块 1.1 os模块简介 os模块是Python的内置模块之一,主要用于与操作系统进行交互,并提供了许多处理文件和目录的方法。在大多数操作系统中,os模块提供了与操作系统底层交互的接口。 1.2 os模块常用方法介绍 1.2.1 获…

    python 2023年5月30日
    00
  • python 读取excel文件生成sql文件实例详解

    下面我来详细讲解一下“Python读取Excel文件生成SQL文件实例详解”的完整实例教程。 一、背景介绍 很多企业或机构在进行数据管理、处理时,常会使用Excel进行数据记录和维护。但是,当数据量逐渐增大时,手动进行数据导入或处理显然已经不能满足需求了。因此,我们需要使用Python编写程序,将Excel文件中的数据进行读取,然后将其生成对应的SQL文件,…

    python 2023年5月13日
    00
  • python入门:argparse浅析 nargs=’+’作用

    那我来讲解一下“Python入门:argparse浅析nargs=’+’作用”。 什么是argparse argparse是Python内置的命令行解析模块,用于在命令行中解析用户输入的参数和选项。它可以自动产生用户输入的帮助信息,支持N多参数的解析,用户使用也很方便。在Python中,我们可以使用import argparse来导入这个模块。 nargs=…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部