class Student:
#2、类变量
stu_class='应用统计'
stu_teacher='li'
stu_cnt=60
#1、实例变量
def __init__(self,sname,sno,sage,sdept):
self.sname=sname
self.sno=sno
self.sage=sage
self.sdept=sdept
pass
def get_info(self):
stu_dict={'class':self.stu_class,'name':self.sname,'sno':self.sno,'age':self.sage,'dept':self.sdept}
return stu_dict
def course(self,day):
if day.weekday()==3:#周一为0
print('周四课程:spss和python')
elif day.weekday()==4:
print('周五课程:数学建模')
pass
pass
@classmethod #类方法用于数据预处理,将输入的字符串进行切割
def data_pre(cls,stu_info):#'sun 5 18 math'
sname,sno,sage,sdept=stu_info.split()
return Student(sname,sno,sage,sdept)
@staticmethod #静态方法,不需要用到实例变量,用于打印课表
def course_s(day):
if day.weekday() == 3: # 周一为0
print('周四课程:spss和python')
elif day.weekday() == 4:
print('周五课程:数学建模')
pass
pass
pass
stu1=Student('zhang',1,20,'math')#创建名为stu1的Student类的实例对象,并传入四个参数'zhang',1,20,'math'
stu2=Student('zhao',2,19,'math')#创建名为stu1的Student类的实例对象,并传入四个参数'zhao',2,19,'math'
print(stu1.get_info())#调用stu1实例对象的get.info()方法获取并打印学生的信息:'class':'应用统计学','name':'zhang','sno':1,'age':19,'dept':'math'
print(stu2.get_info())#调用stu1实例对象的get.info()方法获取并印学生的信息:'class':'应用统计学','name':'zhao','sno':2,'age':19,'dept':'math'
print(stu1.sname)#打印出实例对象stu1的sname属性:zhang
stu1.speciality='唱歌'#增加实例属性:为stu1增加特长的属性
print(Student.stu_cnt,stu1.stu_cnt,stu2.stu_cnt)#打印类属性:stu,实例stu1、stu2的班级人数 输出结果:60 60 60
stu1.stu_class='应用统计一班'#修改stu1的班级属性为‘应用统计一班’
stu2.stu_class='应用统计二班'#修改stu1的班级属性为‘应用统计二班’'
print(Student.stu_class,stu1.stu_class,stu2.stu_class)#打印stu,stu1,stu2对象的班级信息:应用统计,应用统计一班,应用统计二班
Student.stu_class='应用数学'#修改类变量,将班级改为应用数学
Student.m_teacher='chen'#增加类变量m_teacher为chen
import datetime#导入datetime模块
stu1.course(datetime.datetime(2023,5,5))#调用实例方法course,输出结果为:周五课程:数学建模
stu3=Student.data_pre('sun 5 18 math')#调用Student类的data_pre方法,并将字符串'sun 5 18 math'作为参数传递给该方法。然后将返回值赋值给变量stu3
print(stu3.get_info())#获取学生stu3的信息,并将其存储在一个字典中返回:{'class':'应用数学','name':sun,'sno':'5','age':'18','dept':'math'}