Python3.7 类属性与实例属性详解
190 浏览量
更新于2024-08-31
收藏 49KB PDF 举报
"本文主要介绍了Python3.7中的类属性和实例属性,包括它们的定义、特点以及如何访问和修改这些属性。"
在Python中,类是一种创建对象的蓝图,它包含了一些数据(属性)和行为(方法)。类属性和实例属性是类中的两种重要属性类型,它们有着不同的特性和使用场景。
一、类属性和实例属性的划分
1. 类属性:类属性是在类定义中,但在任何方法之外定义的变量。它们属于类本身,而不是类的任何特定实例。所有实例共享同一个类属性的值。
```python
class Person:
name = '小张'
age = 24
```
在这个例子中,`name` 和 `age` 是类属性。无论创建多少个 `Person` 的实例,它们都共享相同的 `name` 和 `age` 值。
2. 实例属性:实例属性是在类的方法中,通过 `self.变量名` 定义的变量。每个实例都有自己的实例属性副本,不与其他实例共享。
```python
class Person:
def __init__(self):
self.name = '小张' # 实例属性
```
3. 局部变量:在方法内部以 `变量名 = 变量值` 形式定义的变量,只存在于该方法的作用域内,不会影响类或实例的属性。
二、类属性的特点
类属性的特点是所有实例化的对象都共享相同的变量。这意味着,如果你通过类名来修改类属性,所有实例的对应属性都会改变:
```python
class Person:
name = '小张'
age = 24
p1 = Person()
p2 = Person()
print(p1.name) # 输出 '小张'
print(p2.name) # 输出 '小张'
Person.name = 'Jack'
print(p1.name) # 输出 'Jack'
print(p2.name) # 输出 'Jack'
```
三、访问和修改类属性
1. 通过类名访问和修改类属性:
```python
print(Person.name) # 输出类属性的值
Person.name = '新的名称' # 修改类属性的值
```
2. 通过实例对象访问类属性:
```python
print(p1.name) # 输出实例对象的类属性值
```
3. 修改类属性的值会影响所有实例对象,因为它们共享同一个类属性:
```python
p1.name = '小明' # 这实际上创建了一个新的实例属性 'name',覆盖了类属性
print(p1.name) # 输出 '小明'
print(Person.name) # 输出 '新的名称',类属性未变
```
总结来说,类属性是属于类的,所有实例都可以访问,但修改类属性会影响到所有实例。而实例属性是每个实例独有的,修改一个实例的实例属性不会影响其他实例。理解并掌握类属性和实例属性对于编写面向对象的Python代码至关重要,它们是构建复杂数据结构和实现数据封装的基础。
2020-12-21 上传
2021-01-20 上传
2021-01-20 上传
2020-06-27 上传
247 浏览量
2019-04-11 上传
2021-03-23 上传
2021-12-03 上传
皮卡丘穿皮裤
- 粉丝: 187
- 资源: 955
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明