假设开发一个学生成绩管理系统,录入学生档案和学生成绩,可以对学生档案进行删除、修改、查询、打印。对学生成绩进行求总分、排名次等操作。学生档案和成绩数据用列表保存,每个功能用一个函数实现 ,用多个列表来存储学生的姓名,性别,年龄,语文,数学,英语。
name=["张三","李四","王五"]
sex=["男","女","男"]
age=[18,19,19]
yw=[89,90,83]
sx=[90,87,96]
yy=[88,79,90]
def update(n,name,sex,age) #修改指定的学生信息
def delete(n) #删除指定的学生
def print(n) #显示指定的学生信息
def sumkc(kc) #对指定一门课程进行求和
def sumStudent(n) #对指定的学生求和
def sort(kc) #对指定的课程成绩排序
试想一下:如果这个系统中还要加入课程,教师等数据和相应的功能程序是不是会变得非常复杂?
将数据与对数据的操作封装在一个对象中。世间万物皆对象,每个对象有属性和行为,属性即数据,行为即方法(函数),行为会产生结果(即影响属性的值)。
class 类名:
定义成员变量
定义成员方法
......
class Student:
name=""
age=0
def ppp(self):
print(self.name,self.age)
定义成员方法必须包含参数 self, 且必须为第一个参数,他代表的是类的实例。
x=类名()
例如:x=Student()
诞生一个对象,由变量x引用。x对象中诞生了类中定义的所有成员(变量和方法),通过x可以引用对象中的成员。
x.属性名
x.方法名()
x.name="张三"
x.age=18
x.ppp()
通过对象名调用它的成员方法时,实际上将自己传给了成员方法的self参数。
类有一个名为__init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,例如:
def __init__(self):
构造方法带参数
def __init__(self,name,age):
self.name=name
self.age=age
构建对象时
x=Student("张三",18)
两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问,构造方法就是一个私有成员函数。一般成员变量都应该设为私有,然后通过构造方法对其进行初始化。
class Student:
__name=""
__age=0
def __init__(self,name,age):
self.name=name
self.age=age
1、将课前案例用面向对象的编程思想来实现。
2、定义一个身份证号码类,可以存储一个身份证号码,实现以下方法:验证正确性、获取出生日期、获取性别、获得年龄。
3、定义一个矩形类,有宽和高以及构成矩形的字符,有输出矩形的方法。
咨询电话:0731-88711630 微信号:hn887700 谢老师 QQ:359689361
长沙网学教育科技有限公司 网站备案号:湘ICP备15000537号