Day 16 – 面向对象编程(OOP)

Day 16 – 面向对象编程(OOP)

温馨提示:本文最后更新于2024-12-19 17:29:51,某些文章具有时效性,若有错误或已失效,请在下方留言

面向对象编程(Object Oriented Programming, OOP),模拟事物为对象(Object),每个对象都有自己的属性(attribute)以及方法(methods)

对象与类

在 OOP 中,有类(Class)以及对象(Object)的概念,Class 相当于某一类事物的抽象,相当于蓝图,而 Object 是某一类事物的具现,真实存在的实体

from turtle import Turtle
# Turtle 是类(Class),timmy 是对象(Object)
timmy = Turtle()

对象属性

对象属性的访问:Object.Attribute

my_screen = Screen()
# 访问对象的属性
print(my_screen.canvwidth)

对象方法

对象方法的访问:Object.Method

my_screen = Screen()
print(my_screen.canvwidth)
# 访问对象的方法
my_screen.exitonclick()

完整代码,如下所示

from turtle import Turtle, Screen

# Turtle 是类(Class),timmy 是对象(Object)
timmy = Turtle()
timmy.shape("turtle")
timmy.color("coral")
timmy.forward(100)

my_screen = Screen()
# 访问对象的属性
print(my_screen.canvwidth)
# 访问对象的方法
my_screen.exitonclick()

代码的执行效果,如下所示

执行效果

Python 包

macOSPython 包安装的步骤如下:

1、按照 PyCharm -> Settings… 打开设置窗口

设置窗口

2、打开项目Project: day16-start 菜单中的 Python Interpreter

Python Interpreter选项卡

3、点击左上角的+号,在弹出的窗口中,搜索需要的 python 包,这里以prettytable包为例。

安装prettytable包

4、Python 包安装完成后,即可直接引用包

import prettytable

修改对象属性及方法调用

from prettytable import PrettyTable
table = PrettyTable()
table.field_names = ["Pokemon Name", "Type"]
table.add_row(["Pikachu", "Electric"])
table.add_row(["Squirtle", "Water"])
table.add_row(["Charmander", "Fire"])

print(table)

# 修改对象的属性
table.align = "l"

print(table)

打印效果,如下图所示

打印效果

OOP 版本咖啡机

起始代码包含MenuCoffeeMaker以及MoneyMachine类,如下所示

oop-coffee-machine-start.zip
zip文件
2.0K
from menu import Menu, MenuItem
from coffee_maker import CoffeeMaker
from money_machine import MoneyMachine

money_machine = MoneyMachine()
coffee_maker = CoffeeMaker()
menu = Menu()

is_on = True

while is_on:
    options = menu.get_items()
    choice = input(f"What would you like? ({options}): ")
    if choice == "off":
        is_on = False
    elif choice == "report":
        coffee_maker.report()
        money_machine.report()
    else:
        drink = menu.find_drink(choice)
        if coffee_maker.is_resource_sufficient(drink) and money_machine.make_payment(drink.cost):
            coffee_maker.make_coffee(drink)
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容