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

如何实现类实例拥有对应其他类实例的专属需求变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:55:15