如何实现类实例拥有对应其他类实例的专属需求变量
Person与Commodity类的面向对象建模实现
核心需求落地要点
- 每个
Commodity实例的价格由外生供给量和基于所有Person计算的内生总需求共同决定 - 每个
Person实例初始拥有0.0-100.0的随机double类型财富,且对每个Commodity实例拥有独立的float类型需求变量 - 新增
Commodity实例时,所有已存在的Person实例自动生成对应该商品的专属需求变量
类设计实现(Python示例)
Commodity类
import random from typing import List class Commodity: # 类变量:全局跟踪所有商品实例,用于同步Person的需求 all_commodities = [] def __init__(self, supply: float): self.supply = supply # 外生给定的供给量 self.price = 0.0 # 初始价格,后续通过供需计算更新 # 将当前商品加入全局列表 Commodity.all_commodities.append(self) # 触发所有已存在Person生成对应该商品的需求 Person.update_all_demand(self) def calculate_price(self, total_demand: float): # 供需定价逻辑示例:价格=总需求/供给量(可根据模型调整) self.price = total_demand / self.supply if self.supply > 0 else float('inf') return self.price
Person类
class Person: # 类变量:全局跟踪所有Person实例 all_people = [] def __init__(self): # 初始化0.0-100.0的随机财富值 self.wealth = random.uniform(0.0, 100.0) # 存储各商品的专属需求:key为Commodity实例,value为float类型需求值 self.commodity_demands = {} # 初始化时自动生成已有商品的需求 for commodity in Commodity.all_commodities: self._generate_demand(commodity) # 将当前Person加入全局列表 Person.all_people.append(self) def _generate_demand(self, commodity: Commodity): # 生成该商品的专属随机需求(可根据业务模型调整规则) self.commodity_demands[commodity] = random.uniform(0.1, 10.0) @classmethod def update_all_demand(cls, new_commodity: Commodity): # 为所有已存在的Person批量生成新商品的需求 for person in cls.all_people: person._generate_demand(new_commodity) @classmethod def get_total_demand(cls, commodity: Commodity) -> float: # 计算指定商品的总内生需求 return sum(person.commodity_demands.get(commodity, 0.0) for person in cls.all_people)
使用示例
# 创建2个Person实例 p1 = Person() p2 = Person() # 创建第一个商品,自动同步所有Person的需求 c1 = Commodity(supply=50.0) # 计算并更新c1价格 total_demand_c1 = Person.get_total_demand(c1) c1.calculate_price(total_demand_c1) print(f"商品c1价格:{c1.price:.2f}") # 创建第二个商品,自动同步已存在Person的需求 c2 = Commodity(supply=30.0) total_demand_c2 = Person.get_total_demand(c2) c2.calculate_price(total_demand_c2) print(f"商品c2价格:{c2.price:.2f}") # 查看单个Person的属性 print(f"p1财富:{p1.wealth:.2f}") print(f"p1对c1的需求:{p1.commodity_demands[c1]:.2f}") print(f"p1对c2的需求:{p1.commodity_demands[c2]:.2f}")
设计说明
- 通过类变量实现全局实例跟踪,解决新增商品时自动同步Person需求的问题
- 用字典存储Person的商品需求,确保每个商品对应独立的专属变量
- 定价逻辑和需求生成规则可根据实际建模场景灵活调整,示例采用简化的随机生成和供需公式
内容的提问来源于stack exchange,提问作者Shelby Longbottom
相关产品推荐
相关产品推荐

