You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Package类定义正确性核查求助:代码问题排查与功能完善

Package类代码问题核查与修正

代码中的错误点:

  • 导入错误:from random import randintP 是无效导入,代码中实际使用的是random.randrange,应改为import random 或 from random import randrange。
  • 构造方法参数缺失:__init__方法未接收length、width、height参数,直接赋值self.length = length会触发NameError,因为这些变量未定义。
  • 实例变量与方法名冲突:实例变量self.status和方法def status(self)重名,会导致方法覆盖实例变量,违背“包裹送达时调用方法”的需求,需修改其中一方的名称。
  • 语法错误:status方法中的print语句缺少闭合右括号,导致语法报错。
  • set/get方法不完整:仅实现了getVolume和getTracking,缺少weight、zip(建议改名避免内置函数冲突)、length/width/height等实例变量的set/get方法。
  • volume计算逻辑缺陷:当前在__init__中一次性计算volume,若后续修改长宽高,volume不会自动更新,应在getVolume中实时计算,或在set方法中同步更新。
  • 追踪号格式问题:randrange(0, 10000000)生成的数字可能不足7位,建议补前导零保证格式统一。
  • 内置函数命名冲突:self.zip使用了Python内置函数zip作为变量名,易引发混淆,建议改为self.destination_zip。

修正后的代码:

from datetime import date
import random

class Package():
    # 构造方法:接收必要参数并初始化实例变量
    def __init__(self, length, width, height):
        self.length = length
        self.width = width
        self.height = height
        self.weight = None
        self.destination_zip = None
        self._delivery_status = "Pending"  # 改名避免与方法冲突
        # 生成7位带前导零的追踪号
        self.tracking = f"{random.randrange(0, 10000000):07d}"
        
    # 实时计算并返回体积
    def getVolume(self):
        return self.length * self.width * self.height

    # 返回追踪号
    def getTracking(self):
        return self.tracking

    # 包裹送达时调用的方法:更新状态并打印送达日期
    def mark_delivered(self):
        self._delivery_status = "Delivered"
        print(f"Delivery Date: {date.today()}")

    # 返回追踪号与目的地邮编的字符串表示
    def __str__(self):
        return f"Tracking #: {self.tracking}\nDestination: {self.destination_zip}"

    # 以下为各实例变量的set/get方法
    def set_length(self, length):
        self.length = length

    def get_length(self):
        return self.length

    def set_width(self, width):
        self.width = width

    def get_width(self):
        return self.width

    def set_height(self, height):
        self.height = height

    def get_height(self):
        return self.height

    def set_weight(self, weight):
        self.weight = weight

    def get_weight(self):
        return self.weight

    def set_destination_zip(self, zip_code):
        self.destination_zip = zip_code

    def get_destination_zip(self):
        return self.destination_zip

    def get_delivery_status(self):
        return self._delivery_status

修正说明:

  1. 修复导入问题,使用import random保证randrange可用。
  2. 构造方法添加length、width、height参数,实例化时需传入这些必填属性。
  3. 实例变量status改名为_delivery_status,方法名改为mark_delivered,明确其“标记送达”的功能,避免命名冲突。
  4. 补全print语句的闭合括号,修复语法错误。
  5. 补充所有实例变量的set/get方法,满足需求。
  6. 修改getVolume为实时计算体积,确保长宽高修改后体积值同步更新。
  7. 使用格式化字符串生成7位带前导零的追踪号,格式更规范。
  8. 将zip变量改名为destination_zip,避免与内置函数冲突。

内容的提问来源于stack exchange,提问作者unreliablenarrator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:45:37