实例属性和类属性
1 概念
- 实例属性:每个对象具有的属性,且每个属性的值一般不同,比如每个人的姓名
- 类属性:每个对象具有的属性,但是每个属性的值相同,比如人类的最大寿命,班级内学生的性别
2 区别
(1)概念上
- 实例属性值是每个对象各自独立的,在内存中也会出现多份
- 类属性一般所有对象都共有的,在内存中只保留一份
(2)声明位置
- 实例属性:在__init__()方法中
- 类属性:直接在类中定义
(3)访问方式
- 实例属性:只有实例对象能够访问
- 类属性:实例对象和类对象都可以访问
(4)修改形式
- 实例属性:实例对象.实例属性 = 值
- 类属性:类对象.类属性 = 值,实例对象不能修改类属性
注意:如果实例对象具有和类对象同名的实例属性,优先使用实例属性。
# 定义学生类,属性:name,age,gender
class Student:
gender = "男"
# 类属性:公共资源
def __init__(self, name, age):
self.name = name self.age = age
# self.gender = gender # zs,ls是否为同一个地址?不同
zs = Student('zs', 20)
ls = Student('ls', 20)
print(Student.gender) # 类对象可以访问类属性
print(Student.name) # 类对象可以访问实例属性?不能
# 修改属性
zs.gender = "女" # 增加一个gender实例属性
Student.gender = "女" # 修改类属性