类体中、所有函数之外:此范围定义的变量,称为类属性或类变量;
类体中,所有函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量;
类体中,所有函数内部:以“变量名=变量值”的方式定义的变量,称为局部变量。
1、类变量(类属性)
- 所有实例化对象都共享类变量
- 可以使用类名调用也可以使用类的实例化对象调用
- 使用类名调用也可以修改类变量的值,因为类变量是共有所以会影响所有实例化对象,其他对象调用的该值也会改变
- 通过类名.变量名也可以为类新添加类变量
- 通过类的实例化对象修改类变量的值是指定义了新的实例变量,而不是在给类变量重新赋值
2、实例变量(实例属性)
- 实例变量指的是在任意类方法内部,以“self.变量名”的方式定义的变量
- 实例变量只能通过对象名访问,无法通过类名访问
- 通过对象名.变量名是指添加实例变量
- 对象名.类变量名也是指添加了和类变量同名的实例变量,而不是在修改类变量的值,但不会影响其他对象调用该变量的值
- 类中实例变量和类变量可能会同名,这时如果使用类对象就会无法调用类变量,而是优先调用实例变量,所以不推荐类变量名使用对象名调用
3、局部变量
- 类方法中的局部变量直接以“变量名=值”的方式进行定义
- 局部变量只作用于类方法中,方法执行完成后局部变量也被销毁