高考志愿填报指导
0731-88711630

Python编程

当前位置:主页 > 教学资料 > Python编程 >

第九课 python面向对象编程(一)

面向过程的编程思路

假设开发一个学生成绩管理系统,录入学生档案和学生成绩,可以对学生档案进行删除、修改、查询、打印。对学生成绩进行求总分、排名次等操作。学生档案和成绩数据用列表保存,每个功能用一个函数实现 ,用多个列表来存储学生的姓名,性别,年龄,语文,数学,英语。

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

类方法

在类中定义的方法如果不带self参数,那它仅仅是一个普通函数,可以通过类名直接调用,不能通过对象名调用。

编程练习

1、将课前案例用面向对象的编程思想来实现。

2、定义一个身份证号码类,可以存储一个身份证号码,实现以下方法:验证正确性、获取出生日期、获取性别、获得年龄。

3、定义一个矩形类,有宽和高以及构成矩形的字符,有输出矩形的方法。

咨询电话:0731-88711630 微信号:hn887700 谢老师 QQ:359689361
长沙网学教育科技有限公司 网站备案号:湘ICP备15000537号