本系列文章配套代码获取有以下三种途径:
-
可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):
https://returu.github.io/Python_Basic/lab/index.html
-
也可以通过百度网盘获取,需要在本地配置代码运行环境,环境配置可以查看【Python基础】2.搭建Python开发环境:
链接: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
在类中定义,因此属于类变量,而name
和age
属于实例变量。
使用该类实例化时,不同的实例化对象都有一个共同的类属性school_name
,但是具有不同的name
和age
属性。
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('新华小学', '解放小学')
本篇文章来源于微信公众号: 码农设计师