面向对象(三)-实例属性与类属性

实例属性和类属性

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 = "女" # 修改类属性
原文地址:https://www.cnblogs.com/duxiangjie/p/14206778.html