date:2018.2.5

第五章  面向对象编程

1.python的面向对象

  pythpn的类:概念与c++差不多,不再赘述

  python的对象

  • 类对象
  • 实例对象
  • 细微注意点不再赘述

2.定义和使用类

  class  类名:

    赋值语句...

    赋值语句...

  使用类

3.对象的属性和方法

    对象的属性

      共享属性

      实例对象的私有属性

      对象的属性是动态的

      对象的方法

      类的伪私有属性和方法

      构造函数和析构函数:__init__和__del__

  4.类的继承

    简单继承

    定义子类的属性和方法

    调用超类的构造函数

    多重继承:按从左到右

  5.运算符重载

    加法运算符重载:__add__

    索引和分片重载:__getitem__、__setitem__、__delitem__

自定义迭代器对象

迭代器对象只能使用一次

有多个迭代器的对象

定制对象的字符串形式

  1. 只重载__str__方法
  2. 只重载__repr__方法
  3. 同时重载

6.模块中的类

  用import或from导入类

date:2018.2.6

7.编程实战:用户注册信息管理系统

 

1 from pickle import dump,load
  2 
  3 ##定义user 类,实例对象的uname属性存储用户名,pwd属性存储登陆密码
  4 class user:
  5     #构造函数__init__()创建实例对象时初始化用户名和登陆密码,默认值为None
  6     def __init__(self,uname=None,pwd=None):
  7         self.uname=uname
  8         self.pwd=pwd
  9 
 10     #修改用户名和密码
 11     def update(self,uname,pwd):
 12         self.uname=uname
 13         self.pwd=pwd
 14 
 15     #__repr__()方法定义对象打印格式
 16     def __repr__(self):
 17         return'username=%-16s password=%s'%(self.uname,self.pwd)
 18 ##user类代码结束
 19 
 20 ##函数showall()显示当前已注册用户信息
 21 def showall():
 22     global userlist
 23     if len(userlist)==0:
 24         print('\t当前无注册用户...')
 25     else:
 26         print('\t当前已注册用户如下:')
 27         n=0
 28         for x in userlist:
 29             n+=1
 30             print('\t%d.'%n,x)
 31     input('\t按enter键继续...')
 32     print()
 33 
 34 #查找已注册用户
 35 def find(namekey):
 36     global userlist
 37     n = -1
 38     for x in userlist:
 39         n += 1
 40         if x.uname == namekey:
 41             break
 42     else:
 43         n = -1
 44     return n
 45 #函数结束
 46 
 47 #修改或删除操作
 48 def check_updata():
 49     global userlist
 50     uname=input('\t请输入要查找的用户名:')
 51     index=find(uname)
 52     if index==-1:
 53         print('\t该用户不存在')
 54     else:
 55         print('\t%s 已经注册! ' %uname)
 56         print('\t  1.修改用户')
 57         print('\t  2.删除用户')
 58         op=input('\t输入序号:')
 59         if op == '2':
 60             del userlist[index]
 61             print('\n\t已成功删除')
 62         else:
 63             uname=input('\t请输入新用户名:')
 64             if uname=='':
 65                 print ('\t输入无效')
 66             else:
 67                 pwd=input('\t请输入登陆密码:')
 68                 if pwd=='':
 69                     print('\t登陆密码无效')
 70                 else:
 71                     userlist[index].update(uname,pwd)
 72                     print('\t已成功修改用户')
 73     input('\t按enter键继续...')
 74     print()
 75 #函数结束
 76 
 77 #添加新用户
 78 def adduser():
 79     global userlist
 80     uname=input('\t输入新的用户名:')
 81     if uname == '':
 82         print('\t输入无效')
 83     else:
 84         if find(uname)>-1:
 85             print('\t该用户名存在')
 86         else:
 87             pwd = input('\t请输入登陆密码:')
 88             if pwd == '':
 89                 print('\t登陆密码无效')
 90             else:
 91                 userlist.append(user(uname,pwd))   #关键
 92                 print('\t已成功添加用户')
 93     input('\t按enter键继续...')
 94     print()
 95 #函数结束
 96 
 97 #将用户信息保存进文件
 98 def save():
 99     global userlist
100     myfile=open(r'userdate.bin','wb')
101     global userlist
102     dump(userlist,myfile)
103     myfile.close()
104     print('\t已成功保存')
105     print('\t按enter键继续...')
106     print()
107 #函数结束
108 
109 #清空数据
110 def clear():
111     global userlist
112     userlist.clear()
113     print('\t已成功清除所有数据')
114     print('\t按enter键继续...')
115     print()
116 #函数结束
117 
118 #程序启动#########
119 myfile=open(r'userdate.bin','rb')
120 x=myfile.read(1)
121 if x==b'':
122     userlist=list()
123 else:
124     myfile.seek(0)
125     userlist=load(myfile)
126 myfile.close()
127 
128 while True:
129     print('\t用户注册信息管理系统')
130     print('\t1.显示全部已注册用户')
131     print('\t2.查找修改删除用户信息')
132     print('\t3.添加新用户')
133     print('\t4.保存用户数据')
134     print('\t5.清空数据')
135     print('\t6.退出系统')
136     print()
137     no=input('请输入序号选择对应菜单:')
138     if   no=='1':
139         showall()
140     elif no=='2':
141         check_updata()
142     elif no=='3':
143         adduser()
144     elif no=='4':
145         save()
146     elif no=='5':
147         clear()
148     elif no=='6':
149         print('系统已退出')
150         break
151     else:
152         print('请重新输入')
153 
154 #程序结束

 

PS:有兴趣可自行测试,部分测试样例如下:

用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:1
    当前无注册用户...
    按enter键继续...

    用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:3
    输入新的用户名:ten
    请输入登陆密码:23345
    已成功添加用户
    按enter键继续...

    用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:3
    输入新的用户名:jia
    请输入登陆密码:456754
    已成功添加用户
    按enter键继续...

    用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:3
    输入新的用户名:lu
    请输入登陆密码:111
    已成功添加用户
    按enter键继续...

    用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:1
    当前已注册用户如下:
    1. username=ten             password=23345
    2. username=jia              password=456754
    3. username=lu               password=111
    按enter键继续...

    用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:4
    已成功保存
    按enter键继续...

    用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:5
    已成功清除所有数据
    按enter键继续...

    用户注册信息管理系统
    1.显示全部已注册用户
    2.查找修改删除用户信息
    3.添加新用户
    4.保存用户数据
    5.清空数据
    6.退出系统

请输入序号选择对应菜单:6
系统已退出

Process finished with exit code 0