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

Python中如何基于同一类生成多个ID互不相同的实例?

你当前代码的核心问题是没有实例化类,直接将entity类本身赋值给了player和enemy,两个变量指向同一个类对象,修改属性会互相覆盖,自然无法获得独立的ID和属性。

可行实现方案

  1. 给entity类添加构造方法,将原本的类属性改为实例属性,新增类级别的计数器来自动生成唯一实例ID
  2. 实例化类的时候添加括号()生成独立的实例对象

修正后代码:

class Entity:
    # 类变量,用来记录实例数量,生成唯一ID
    _id_counter = 0
    def __init__(self):
        # 每次实例化自动分配唯一ID
        Entity._id_counter += 1
        self.id = Entity._id_counter
        # 实例属性,每个实例独立拥有
        self.name = "0"
        self.health = 100
        self.strength = 10 # 注:原代码的strenght为拼写错误,此处修正
        self.speed = 10
        self.xp = 0
        self.energy = 100 

# 实例化生成独立对象
player = Entity()
player.name = input("Enter your name: ").strip()
print(f"Welcome, {player.name}. 你的ID是:{player.id}")

enemy = Entity()
enemy.name = "Some Enemy"
enemy.strength = 5
enemy.speed = 20
enemy.xp = 100
print(f"敌人名称:{enemy.name},敌人ID是:{enemy.id}")

# 验证两个实例属性独立
print(f"玩家力量值:{player.strength},敌人力量值:{enemy.strength}")

效果说明

  • 每个Entity实例都会自动生成全局唯一的自增ID,不会重复
  • 所有属性都是每个实例独立持有,修改player的属性不会影响enemy的属性
  • 可以通过isinstance(player, Entity)、isinstance(enemy, Entity)验证二者都归属于Entity类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:06