基础知识
一、类的创建
# 定义"小孩"类
class kid():
# 属性:爱好是玩
hobby = '玩'
# 方法:吃饭
def eatFood(self,food):
print(f'吃{food}')
xiaoming = kid() # 类的实例化,小明属于“小孩”类,小明就具备“小孩”类中的属性和方法
print(xiaoming.hobby)
xiaoming.eatFood('包子')
这个self是用来做什么的呢?🤦♂️
# 定义"小孩"类
class kid():
# 属性:爱好是玩
hobby = '玩'
# 方法:吃饭
def eatFood(self,food):
print(f'吃{food}')
# 方法:说话(说出自己的爱好)
def say(self):
print(f'我的爱好是{self.hobby}')
xiaoming = kid() # 类的实例化,小明属于“小孩”类,小明就具备“小孩”类中的属性和方法
print(xiaoming.hobby)
xiaoming.eatFood('包子')
xiaoming.say()
self是在类还没有创建完成的时候,却又想在类的内容调用类属性或其他方法时
就可以用self.属性名或self.方法名调用自身的方法或属性
二、类的初始化
初始化方法的作用在于:当每个实例对象创建时,该方法内的代码无须调用就会自动执行。
# 定义"小孩"类
class kid():
# 当类实例化的时候自动执行,设置“姓名”属性为小明
def __init__(self):
self.name = '小明'
# 属性:爱好是玩
hobby = '玩'
# 方法:吃饭
def eatFood(self,food):
print(f'吃{food}')
# 方法:说话(说出自己的爱好)
def say(self):
print(f'我的爱好是{self.hobby}')
xiaoming = kid()
print(xiaoming.name)
当然,初始化方法的正确用法是在类实例化的时候,我们给一些属性设初值。
# 定义"小孩"类
class kid():
# 当类实例化的时候自动执行,设置“姓名”属性为小明
def __init__(self,name):
self.name = name
# 属性:爱好是玩
hobby = '玩'
# 方法:吃饭
def eatFood(self,food):
print(f'吃{food}')
# 方法:说出自己的爱好
def say(self):
print(f'我的爱好是{self.hobby}')
print(f'我的姓名是{self.name}')
# 实例化对象小明
xiaoming = kid('小明')
print(xiaoming.name)
xiaoming.say()
# 实例化对象小红
xiaohong = kid('小红')
print(xiaoming.name)
xiaoming.say()
三、类的继承与定制
class ball():
weight = 10
def move(self,speed):
print('小球移动速度是{}'.format(speed))
class new_ball(ball):
def move(self,speed):
print('小球移动速度是{}'.format(speed*2))
ball_1 = ball()
ball_2 = new_ball()
ball_1.move(10)
ball_2.move(10)
但是这样直接重写父类的方法,如果父类的方法发生变化,子类的方法也得重新修改,不利于我们维护,最好先继承父类的方法,再做修改。
class ball():
weight = 10
def move(self,speed):
print('小球移动速度是{}'.format(speed))
class new_ball(ball):
def move(self,speed):
ball.move(self,speed*2)
ball_1 = ball()
ball_2 = new_ball()
ball_1.move(10)
ball_2.move(10)
项目一、智能储蓄罐
你有一个智能储蓄罐,该储蓄罐安装了高级人工智能芯片,会做四件事。
一是可以查询余额 (假设你是一个中东土豪,在对象实例化时,你已经在该储蓄罐已经存了100元)
二是可以存钱
三是可以取钱
四是可以换算美元汇率,1美元=6.3717人民币
# 定义"智能存钱罐"类
class moneyBox():
# 初始化函数,类实例化的时候自动调用
def __init__(self,money):
self.money = money
# 菜单
def menu(self):
print('欢迎使用智能存钱罐')
while True:
user_choice = input('请选择功能(1、查询余额 2、存钱 3、取钱 4、换算美元 5、退出):')
if user_choice == '1':
self.showMoney()
elif user_choice == '2':
self.saveMoney()
elif user_choice == '3':
self.drawMoney()
elif user_choice == '4':
self.exchangeRate()
elif user_choice == '5':
print('谢谢您的使用,下次记得多来存点钱啊')
break
# 展示余额
def showMoney(self):
print(f'你现在一共存了{self.money}元')
# 存钱
def saveMoney(self):
money = int(input('请输入你要存多少钱:'))
self.money = self.money + money
print(f'你现在一共存了{self.money}元')
# 取钱
def drawMoney(self):
money = int(input('请输入你要取多少钱:'))
if self.money < money:
print('抱歉,您太穷了,您没有那么多钱')
return False
self.money = self.money - money
print(f'你现在一共存了{self.money}元')
# 汇率换算
def exchangeRate(self):
dollar = round(self.money/6.3717,2) # round(x,y) 对x的前y位四舍五入取整
print(f'换算成美元是{dollar}$')
my_moneyBox = moneyBox(100)
my_moneyBox.menu()
input('按下任意键退出程序')
项目二、智能点菜机器人
练习:
'''
项目需求:
你是一名享誉全球的考古学家,在三星堆的发掘作业中,
你发现了一个奇怪的机器,经过研究,这是距今23亿万年前的亚特兰蒂斯文明所遗留的科技。
那时的人类已经可以实现自动点菜的功能了,这无疑是一项颠覆世界的发现。
但因年代久远,丢失了一些代码片段,你同时作为中职Python首席科学家,需要补全代码
'''
# 定义“菜”类
class dish():
# 每道菜有两个属性、菜的名字和价格,每道菜的这两个属性各不相同
def __init__(self,name,price):
self.name = name
self.price = price
# 每道菜具有相同的方法、如你所见,即展示自己的菜名和价格,
# 因为它已经是一个成熟的“菜”类了,要学会自己介绍自己
def show_info(self):
print(f'菜名:{self.name},价格{self.price}元')
# 定义“智能点菜机器人”类
class orderMachine():
# 类初始化时,我们希望他有一个初始的菜单,dish_list里管理的应该是“菜”类的实例化对象
def __init__(self,dish_list):
self.dish_list = dish_list
# 用户点的菜,这个玩意不需要实例化的时候从外面传,因为这个得靠用户自己点,总不能还没点就有东西吧
self.user_order_list = []
# 操作菜单(5分)
def menu(self):
print('今年是超新星纪元305年,欢迎使用亚特兰蒂斯点菜系统:')
while True:
user_input = input('请选择:1、查看菜单 2、增加菜单 3、点菜 4、退出系统:')
# 记得看演示程序运行的效果,然后补全
# 查看菜单(5分)
def show_menu(self):
# 记得看演示程序运行的效果,然后补全
if user_input == '1':
self.show_menu()
# 增加菜单(5分)
# 此功能最好需要输入密码才可以使用,否则用户万一捣乱,往菜单里添加一个“稀饭煮翔”,岂不糟糕?
def add_dish(self):
# 记得看演示程序运行的效果,然后补全
# 点菜(5分)
# 消费 100 元及以上享受 8 折优惠,100 元以下享受每满 10 减 1 优惠”的活动(5分)
def order_dish(self):
# 记得看演示程序运行的效果,然后补全
# “菜”类的实例化
dish1 = dish('红烧排骨',46)
dish2 = dish('香炸刀鱼',45)
dish3 = dish('虾仁炒蛋',68)
dish_list = [dish1,dish2,dish3]
# “智能点菜机器人”类的实例化
my_orderMachine = orderMachine(dish_list)
my_orderMachine.menu()
项目三、机房管理系统
一、定义“房间”类
“房间”类就两个属性,房间号和房间名
class room():
def __init__(self,number,name):
self.number = number
self.name = name
Room203 = room(203,'网络综合布线工作室') # 实例化对象
print(Room203.number)
print(Room203.name)
二、定义“机房管理系统”类
class room():
def __init__(self,number,name):
self.number = number
self.name = name
class system():
# 菜单
def menu(self):
print('欢迎使用海盐商贸学校机房管理系统!!!')
while True:
choice = input('请选择(1、查看所有机房2、增加机房3、借用机房4、归还机房5、退出):')
if choice == '1':
self.showAllRoom()
elif choice == '2':
self.addRoom()
elif choice == '3':
self.borrowRoom()
elif choice == '4':
self.returnRoom()
elif choice == '5':
break
HaiYanSystem = system()
HaiYanSystem.menu()
三、查看所有机房
class room():
# state为借出状态,默认未借出
def __init__(self,number,name,state = 0):
self.number = number
self.name = name
self.state = state
def __str__(self):
if self.state == 0:
state_text = '未借用'
else:
state_text = '已借用'
return '机房房间号{},机房名字{},机房借用状态{}'.format(self.number,self.name,state_text)
class system():
def __init__(self) -> None:
Room203 = room('203','网络综合布线工作室')
Room204 = room('204','网络搭建机房')
Room305 = room('305','Python学习机房')
self.Room_list = [Room203,Room204,Room305]
# 菜单
def menu(self):
print('欢迎使用海盐商贸学校机房管理系统!!!')
while True:
choice = input('请选择(1、查看所有机房2、增加机房3、借用机房4、归还机房5、退出):')
if choice == '1':
self.showAllRoom()
elif choice == '2':
self.addRoom()
elif choice == '3':
self.borrowRoom()
elif choice == '4':
self.returnRoom()
elif choice == '5':
break
#查看所有机房
def showAllRoom(self):
for Room in self.Room_list:
print(Room)
HaiYanSystem = system()
HaiYanSystem.menu()
四、增加机房
#增加机房
def addRoom(self):
number = input('请输入房间号:')
name = input('请输入机房名:')
new_room = room(number,name)
self.Room_list.append(new_room)
五、借用机房
#借用机房
def borrowRoom(self):
number = input('请输入你要借用的机房房间号:')
for room in self.Room_list:
if room.number == number:
if room.state == 0:
print('成功借用机房')
room.state = 1
else:
print('该机房已被借用')
break
else:
print('没有该机房')
六、归还机房
#归还机房
def returnRoom(self):
number = input('请输入你要归还的机房房间号:')
for room in self.Room_list:
if room.number == number:
if room.state == 1:
print('成功归还机房')
room.state = 0
else:
print('该机房没被借用')
break
else:
print('没有该机房')