菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python property() 函数

Python3 内置函数 Python3 内置函数


property() 是 Python 中用于创建属性(property)的内置函数。

property 是一种强大的机制,允许我们在访问属性时执行代码,常用于实现计算属性、数据验证等高级特性。

单词释义: property 意为"属性",用于定义类的属性。


基本语法与参数

语法格式

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

参数说明

  • 参数 fget(可选):
    • 类型: 函数
    • 描述: 获取属性值时调用的函数。
  • 参数 fset(可选):
    • 类型: 函数
    • 描述: 设置属性值时调用的函数。
  • 参数 fdel(可选):
    • 类型: 函数
    • 描述: 删除属性时调用的函数。
  • 参数 doc(可选):
    • 类型: 字符串
    • 描述: 属性的文档字符串。

函数说明

  • 返回值: 返回一个 property 对象。
  • 特点: 使属性访问看起来像普通变量,但实际上执行的是函数。

实例

示例 1:基础用法

实例

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

# 使用 property 创建计算属性
def get_area(self):
"""计算圆的面积"""
return 3.14159 * self.radius ** 2

def set_radius(self, value):
"""设置半径(可以添加验证)"""
if value < 0:
raise ValueError("半径不能为负数")
self.radius = value

# 创建 property
area = property(get_area, set_radius)

# 使用
c = Circle(5)
print(f"半径: {c.radius}") # 输出: 半径: 5
print(f"面积: {c.area}") # 输出: 面积: 78.53975

# 设置属性
c.radius = 10
print(f"新面积: {c.area}") # 输出: 新面积: 314.159

# 验证
c.radius = -5 # 会抛出异常

运行结果预期:

半径: 5
面积: 78.53975
新面积: 314.159

代码解析:

  1. 通过 property 可以定义计算属性。
  2. setter 可以添加数据验证逻辑。

示例 2:使用 @property 装饰器(推荐)

实例

class Student:
def __init__(self, name, score):
self.name = name
self._score = score

@property
def score(self):
"""获取成绩"""
return self._score

@score.setter
def score(self, value):
"""设置成绩(带验证)"""
if not 0 <= value <= 100:
raise ValueError("成绩必须在 0-100 之间")
self._score = value

@property
def grade(self):
"""根据成绩计算等级"""
if self._score >= 90:
return 'A'
elif self._score >= 80:
return 'B'
elif self._score >= 70:
return 'C'
elif self._score >= 60:
return 'D'
else:
return 'F'

# 使用
s = Student("Tom", 85)
print(s.name) # 输出: Tom
print(s.score) # 输出: 85
print(s.grade) # 输出: B

s.score = 92 # 设置成绩
print(s.grade) # 输出: A

s.score = 105 # 会抛出异常

运行结果预期:

Tom
85
B
A

代码解析:

  • @property 装饰器是更 Pythonic 的写法。
  • 可以定义 getter、setter、deleter。

示例 3:只读属性

实例

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

@property
def name(self):
"""只读属性"""
return self._name

# 不定义 setter,则属性不可修改

p = Person("Tom")
print(p.name) # 输出: Tom

# 尝试修改会报错(没有 setter)
# p.name = "Jack" # 会抛出 AttributeError

# 删除也会报错
# del p.name # 会抛出 AttributeError

运行结果预期:

Tom

只定义 getter 不定义 setter,可以创建只读属性。


Python3 内置函数 Python3 内置函数


AI 思考中...

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /