# 编辑者:闫龙
# 定义老师类,把老师的属性:薪资,隐藏起来,然后针对该属性开放访问接口
# egon老师有多种癖好,把这种癖好隐藏起来,然后对外提供访问接口
# 而且以后还会egon老师培养很多其他的癖好,对外开放修改接口可以新增癖好
# 并且需要保证新增的癖好都是字符串类型,否则无法增加成功
menu = ["查看工资","查看怪癖","添加怪癖"] #定义一个菜单
class Teacher:#老师类
def __init__(self,name,pay):#初始化时传入名字和工资
self.__pay = pay#工资作为隐藏属性
self.name = name
def GetPay(self):#查看工资方法
print(self.name,"的工资是",self.__pay,"元,请保密,千万不要贴在办公室的墙上")
class Wack:#定义怪人类
def __init__(self,hobby):#初始化时传入hobby列表
self.__hobby = hobby#怪癖作为隐藏属性
def addHobby(self,choice):#添加新怪癖方法
self.__hobby.append(choice)#添加新的怪癖到隐藏属性hobby中
print("怪癖添加完成")
def LookHobby(self):#查看怪癖方法
print(self.name,"的的怪癖如下:")
for i in self.__hobby:
print(i)
class WackTeacher(Teacher,Wack):#定义怪老师类,继承老师和怪人类
def __init__(self,name,pay,hobby):#初始化时将怪人,老师初始化时的参数逐一接收
Teacher.__init__(self,name,pay)
Wack.__init__(self,hobby)
print("%s已经出现在视野里"%name)
def GetSetWackTeacher(self):#对怪老师的操作方法
for i in range(len(menu)):
print("%s.%s"%(i+1,menu[i]))
choice = input("请选择:")
if(choice == ""):
Teacher.GetPay(self)#查看怪老师的工资
self.GetSetWackTeacher()#重新调用怪老师的操作方法
elif(choice == ""):
Wack.LookHobby(self)#查看怪老师的怪癖
self.GetSetWackTeacher()
elif(choice == ""):#增加一个新的怪癖
while True:
choice = input("新的怪癖:")
if(type(choice)==str):
Wack.addHobby(self, choice)
self.GetSetWackTeacher()
else:
continue
#实例化怪老师类,Egon
Egon = WackTeacher("egon",2.5,["矮根儿","小林林","海峰","SomeBody"])
#Egon中的怪老师操作方法
Egon.GetSetWackTeacher()

Python练习-一个怪癖老师的不可描述的更多相关文章

  1. Pyscripter是python下一个非常流行的开源IDE

    Pyscripter 不能正确调用另一文件中模块的问题的解析(Internal Engine 和 Remote Engine) 背景 Pyscripter是python下一个非常流行的开源IDE,笔者 ...

  2. python socket编程---从使用Python开发一个Socket示例说到开发者的思维和习惯问题

    今天主要说的是一个开发者的思维和习惯问题. 思维包括编程的思维和解决一个具体问题的分析思维,分析思路,分析方法,甚至是分析工具. 无论是好习惯还是不好的习惯,都是在者一天一天的思维中形成的.那些不好的 ...

  3. 用python做一个搜索引擎(Pylucene)

    什么是搜索引擎? 搜索引擎是“对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分”.如图1是搜索引擎的一般结构,信息搜集模块从网络采集信息到网络信息库之中(一般 ...

  4. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  5. python 获取一个列表有多少连续列表

    python 获取一个列表有多少连续列表 例如 有列表 [1,2,3] 那么连续列表就是 [1,2],[2,3],[1,2,3] 程序实现如下: 运行结果:

  6. python是一个解释器

    python是一个解释器 利用pip安装python插件的时候,观察到python的运作方式是逐步解释执行的 适合作为高级调度语言: 异常的处理以及效率应该是主要的问题

  7. 使用python检测一个设备是否ping的通

    使用python检测一个设备是否ping的通 一,subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并 ...

  8. python 登陆一个网站

    今天想用python写一个登陆的脚本,搜了一下,网上挺多的,看了一些后写了个登陆虎扑论坛的脚本. 原理: 只要在发送http请求时,带上含有正常登陆的cookie就可以了. 1.首先我们要先了解coo ...

  9. Python开发一个csv比较功能相关知识点汇总及demo

    Python 2.7 csv.reader(csvfile, dialect='excel', **fmtparams)的一个坑:csvfile被csv.reader生成的iterator,在遍历每二 ...

随机推荐

  1. windows多线程(八) 信号量Semaphore

    如果你看到了这里,我就认为你已经对掌握了有关关键段 CriticalSection.互斥量Mutex和事件Event有关的内容,所以最基本的东西就不再介绍了.如果没有掌握上面说的内容,可以看这里: 关 ...

  2. QVariant相当于一个包含大多数Qt数据类型的联合体(源码解读)

    将数据存储为一个Private结构体类型的成员变量d: <qvariant.cpp> 1 QVariant::QVariant(Type type) 2 { create(type, 0) ...

  3. DotNetty 跨平台的网络通信库

    长久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架.终于微软的Azure团队,使用C#实现的Netty的版本发布.不但使用了C#和.Net平台的技术特点, ...

  4. 相见恨晚的 scala - 01 [ 基础 ]

    简洁到不行,多一个分号都是不应该. 学习笔记: centOS 下安装 scala 和安装 jdk 一毛一样 . 1 . 不同于 Java 的变量声明 :( 但是和 js 很像 ) /** * Crea ...

  5. [BZOJ4044]Virus synthesis 回文自动机的DP

    4044: [Cerc2014] Virus synthesis Time Limit: 20 Sec  Memory Limit: 128 MB Description Viruses are us ...

  6. vyos 基础配置

    vyos 基础配置 http://www.lowefamily.com.au/2015/11/29/using-a-vyos-router-with-hyper-v/1/http://thomasvo ...

  7. C/C++缓冲区刷新问题

    参考链接 参考链接2 Buffers are normally maintained by the operating system, which determines the optimal tim ...

  8. 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)

    题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...

  9. go递归打印指定目录下的所有文件及文件夹

    func treedir(fpath string){ // 获取fileinfo if finfo,err := os.Stat(fpath); err == nil { // 判断是不是目录 如果 ...

  10. easyUI datetimebox 自定义显示格式

    http://blog.csdn.net/littlewolf766/article/details/7329123 项目里需要显示自定义显示格式,比如只显示yyy,yyyy-mm,yyyy-mm-d ...