首页Python【Python基础】18....

【Python基础】18.类变量和实例变量


本系列文章配套代码获取有以下三种途径:

  • 可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):

https://returu.github.io/Python_Basic/lab/index.html
链接:https://pan.baidu.com/s/1x2Ynh_VibPY2u-HWTaJo8w?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Basic

—————————————————

类变量是在定义类时所定义的,类的所有实例都会共享类变量。

实例变量只有在实例化时,系统才会为该实例指定的其所特有的数据,区别于该类的其他实例。

1.类变量与实例变量:

下面定义了一个Student类,在设计类的结构时,让其代表光明小学的学生类。变量school_name在类中定义,因此属于类变量,而nameage属于实例变量。

使用该类实例化时,不同的实例化对象都有一个共同的类属性school_name,但是具有不同的nameage属性。

 1# 定义一个类
2>>class Student:
3...     
4...     school_name = "光明小学" # 类变量
5...     
6...     def __init__(self , name , age):
7...         self.name = name
8...         self.age = age
9       
10
11# 实例化第一个对象
12>>> student_1 = Student('Tom' , '12')
13# 实例属性变量
14>>> student_1.name , student_1.age
15('Tom''12')
16# 类属性
17>>> student_1.school_name
18'光明小学'
19
20# 实例化第二个对象
21>>> student_2 = Student('Lucy' , '11')
22# 实例属性变量
23>>> student_2.name , student_2.age
24('Lucy''11')
25# 类属性
26>>> student_2.school_name
27'光明小学'

2.类变量与实例变量的注意事项:

通过修改一个类的类变量,可以将该类所有实例化对象的类属性统一修改。

 1# 定义一个类
2>>class Student:
3...     
4...     school_name = "光明小学" # 类变量
5...     
6...     def __init__(self , name , age):
7...         self.name = name
8...         self.age = age
9         
10
11# 实例化对象
12>>> student_1 = Student('Tom' , '12')
13>>> student_2 = Student('Lucy' , '11')
14# 类属性
15>>> student_1.school_name , student_2.school_name
16('光明小学''光明小学')
17
18# 修改类变量
19>>> Student.school_name = "东方小学"
20# 类属性
21>>> student_1.school_name , student_2.school_name
22('东方小学''东方小学')

只修改某个实例的类变量时,其他实例对象的类变量不变。

1# 只修改某个实例的类变量
2>>> student_1.school_name = "实验小学"
3# 类属性
4>>> student_1.school_name , student_2.school_name
5('实验小学''东方小学')

但是当实例变量和类变量的同时修改时,系统会以实例变量优先,因此此时会导致类变量修改失败。

1# 当实例变量和类变量的同时修改时
2>>> student_1.school_name = "新华小学"
3>>> Student.school_name = "解放小学"
4# 类属性
5>>> student_1.school_name , student_2.school_name
6('新华小学''解放小学')


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments