Python练习-一个怪癖老师的不可描述

本文通过一个具体的案例,展示了如何使用Python实现面向对象的设计原则,特别是信息隐藏和封装的概念。通过对教师类的薪资和癖好的封装,演示了如何安全地暴露属性的访问接口,并允许在确保数据类型的前提下增加新的属性。
 1 # 编辑者:闫龙
 2 # 定义老师类,把老师的属性:薪资,隐藏起来,然后针对该属性开放访问接口
 3 #     egon老师有多种癖好,把这种癖好隐藏起来,然后对外提供访问接口
 4 #     而且以后还会egon老师培养很多其他的癖好,对外开放修改接口可以新增癖好
 5 # 并且需要保证新增的癖好都是字符串类型,否则无法增加成功
 6 menu = ["查看工资","查看怪癖","添加怪癖"] #定义一个菜单
 7 class Teacher:#老师类
 8     def __init__(self,name,pay):#初始化时传入名字和工资
 9         self.__pay = pay#工资作为隐藏属性
10         self.name = name
11     def GetPay(self):#查看工资方法
12         print(self.name,"的工资是",self.__pay,"元,请保密,千万不要贴在办公室的墙上")
13 class Wack:#定义怪人类
14     def __init__(self,hobby):#初始化时传入hobby列表
15         self.__hobby = hobby#怪癖作为隐藏属性
16     def addHobby(self,choice):#添加新怪癖方法
17         self.__hobby.append(choice)#添加新的怪癖到隐藏属性hobby中
18         print("怪癖添加完成")
19     def LookHobby(self):#查看怪癖方法
20         print(self.name,"的的怪癖如下:")
21         for i in self.__hobby:
22             print(i)
23 class WackTeacher(Teacher,Wack):#定义怪老师类,继承老师和怪人类
24     def __init__(self,name,pay,hobby):#初始化时将怪人,老师初始化时的参数逐一接收
25         Teacher.__init__(self,name,pay)
26         Wack.__init__(self,hobby)
27         print("%s已经出现在视野里"%name)
28     def GetSetWackTeacher(self):#对怪老师的操作方法
29         for i in range(len(menu)):
30             print("%s.%s"%(i+1,menu[i]))
31         choice = input("请选择:")
32         if(choice == "1"):
33             Teacher.GetPay(self)#查看怪老师的工资
34             self.GetSetWackTeacher()#重新调用怪老师的操作方法
35         elif(choice == "2"):
36             Wack.LookHobby(self)#查看怪老师的怪癖
37             self.GetSetWackTeacher()
38         elif(choice == "3"):#增加一个新的怪癖
39             while True:
40                 choice = input("新的怪癖:")
41                 if(type(choice)==str):
42                     Wack.addHobby(self, choice)
43                     self.GetSetWackTeacher()
44                 else:
45                     continue
46 #实例化怪老师类,Egon
47 Egon = WackTeacher("egon",2.5,["矮根儿","小林林","海峰","SomeBody"])
48 #Egon中的怪老师操作方法
49 Egon.GetSetWackTeacher()

 

转载于:https://www.cnblogs.com/DragonFire/p/6740407.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值