MST

星途 面试题库

面试题:Python类模拟实物:复杂设备类设计

假设你要使用Python类模拟一台多功能打印机。这台打印机有打印、扫描、复印功能,且有墨盒剩余量、纸张数量等状态属性。打印、扫描、复印功能会消耗相应的资源(如纸张、墨盒墨水等)。请设计该打印机类的架构,包括属性、方法及必要的初始化逻辑,并解释类中各部分的作用及如何实现资源消耗逻辑。
20.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
class MultifunctionPrinter:
    def __init__(self, initial_ink=100, initial_paper=100):
        # 墨盒剩余量,初始化时设置为传入的初始墨盒量
        self.ink_level = initial_ink
        # 纸张数量,初始化时设置为传入的初始纸张量
        self.paper_count = initial_paper

    def print_document(self, pages):
        # 打印功能,检查纸张和墨盒是否足够
        if self.paper_count < pages or self.ink_level < pages:
            if self.paper_count < pages:
                print(f"纸张不足,需要 {pages - self.paper_count} 张纸")
            if self.ink_level < pages:
                print(f"墨盒墨水不足,需要 {pages - self.ink_level} 单位墨水")
        else:
            self.paper_count -= pages
            self.ink_level -= pages
            print(f"成功打印 {pages} 页")

    def scan_document(self, pages):
        # 扫描功能,只消耗纸张
        if self.paper_count < pages:
            print(f"纸张不足,需要 {pages - self.paper_count} 张纸")
        else:
            self.paper_count -= pages
            print(f"成功扫描 {pages} 页")

    def copy_document(self, pages):
        # 复印功能,消耗纸张和墨盒
        if self.paper_count < pages or self.ink_level < pages:
            if self.paper_count < pages:
                print(f"纸张不足,需要 {pages - self.paper_count} 张纸")
            if self.ink_level < pages:
                print(f"墨盒墨水不足,需要 {pages - self.ink_level} 单位墨水")
        else:
            self.paper_count -= pages
            self.ink_level -= pages
            print(f"成功复印 {pages} 页")
  1. 属性
    • ink_level:表示墨盒剩余量。
    • paper_count:表示纸张数量。
  2. 方法
    • __init__:初始化方法,用于设置打印机墨盒和纸张的初始量。
    • print_document:打印方法,接受要打印的页数作为参数。首先检查纸张和墨盒是否足够,如果不足则提示缺少的资源量;如果足够则减少相应的纸张和墨盒量,并提示打印成功。
    • scan_document:扫描方法,接受要扫描的页数作为参数。检查纸张是否足够,如果不足则提示缺少的纸张量;如果足够则减少纸张量,并提示扫描成功。
    • copy_document:复印方法,接受要复印的页数作为参数。检查纸张和墨盒是否足够,如果不足则提示缺少的资源量;如果足够则减少相应的纸张和墨盒量,并提示复印成功。
  3. 资源消耗逻辑:在print_documentcopy_document方法中,每次执行操作时会根据操作的页数减少墨盒剩余量和纸张数量;在scan_document方法中,只根据扫描的页数减少纸张数量。如果资源不足,则不会执行操作并给出相应提示。