Python3.7 类属性与实例属性详解

0 下载量 73 浏览量 更新于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代码至关重要,它们是构建复杂数据结构和实现数据封装的基础。