Python拍卖程序Bidding类实现及关联Starter类问题求助
问题排查
- Bidding类初始化逻辑错误:
__init__方法中self.bidding = self.bidding属于无效赋值,没有将传入的拍卖标识参数绑定到实例属性,应该改为self.bidding = bidding - 缺少要求的实例属性:没有在初始化阶段定义
price(当前拍卖价)、winner(当前获胜者)两个必填属性,也没有设置winner的默认值为None - 方法名不符合要求:要求的方法名是小写开头的
beginbid,现有代码写的是大写开头的Beginbid,调用时会匹配失败 - 出价逻辑完全缺失:现有
Beginbid方法仅返回传入的出价人ID,没有更新拍卖价格、记录当前获胜者的相关逻辑
正确实现方案
以下实现默认每次出价在当前价格基础上加1,你也可以根据业务需求调整加价规则,比如给beginbid方法增加自定义加价金额参数。
class Starter: def __init__(self, startd, starterid, bidding): self.startd = startd self.starterid = starterid self.bidding = bidding class Bidding: def __init__(self, bidding): # 绑定唯一拍卖标识 self.bidding = bidding # 初始化默认属性,初始起拍价可根据需求调整 self.price = 0 self.winner = None def beginbid(self, bidder_id): # 出价逻辑:更新当前最高价和对应获胜者 self.price += 1 self.winner = bidder_id # 可选返回当前出价结果,可根据业务需求调整返回值 return {"当前最高价": self.price, "当前获胜者": self.winner} # 用法示例 c = Starter(1, '8dac2b', 'ewmzr') # 创建对应拍卖标识的Bidding实例,你问题中写的Auction为笔误,应为Bidding bidtest = Bidding(c.bidding) # 调用出价方法 bidtest.beginbid(c.starterid) # 查看当前拍卖属性 print(bidtest.price) # 输出:1 print(bidtest.winner) # 输出:8dac2b
内容的提问来源于stack exchange,提问作者jordan parker
相关产品推荐
相关产品推荐

