在开始这个项目之前,我们先了解一下类变量的基础知识:
一、类变量
1. 实例变量和实例函数
静态属性 ==> 实例变量/成员变量
动态属性 ==> 实例函数(方法)/成员函数(方法)
每一份实例都有自己独立的一份数据;
对于公共的数据(对每个对象没有差异的数据),我们把它定义成实例变量是不合理的。我们只需要存储一份, 应该把它定义成类变量,所有的对象后期调用的时候直接调用类变量就可以了。这样可以提高运行速度、节约对象实例化的内存资源。
2. 类变量
类变量一般位于类名称的下面,构造函数的上面;
class Person:
count = 0 # 类变量
def __init__(self,name,age):
self.name = name # 成员变量
self.age = age
Person.count += 1
def say_hello(self): # 成员函数
print("大家好,我是"+self.name+",今年"+self.age+"岁!")
if __name__ == '__main__':
peter = Person("peter","20")
peter.say_hello()
# 想通过一个变量来记录这个类被实例化多少次
alice = Person("alice", "22")
alice.say_hello()
print(Person.count)
类变量只存储一份,存储在类空间中,在每个对象的空间中不需要存储类变量
3. 类变量的访问
在类中访问类变量: 类名.类变量名称
在对象中访问类变量:类名.类变量名称或者对象名.类变量名称
推荐:如果访问类变量,最好还是通过类名.类变量名称来进行访问。
4. 对象变量访问的顺序
如果类变量与实例变量同名,使用对象名.类变量名访问,优先访问的是实例变量。
原则:变量通过对象名.变量名的方式访问时,优先在当前对象中查找有没有该变量名,如果没有则去类空间中查找该变量名。
二、GUI 界面搭建
我们搭建一个可以统计学生人数的窗体,包括男生人数和女生人数:
from tkinter import *
from tkinter.ttk import *
import os
class StudentGUI(Tk):