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

Python类实例化时如何传递参数?附代码示例求解

解决实例化类时传递name参数的问题

你的问题核心在于**robot_directory里存储的是已经实例化好的对象,而不是类本身**,而且原来的代码里直接写Robot1()、Robot2()还会报错——因为这两个类的__init__方法要求必须传入name参数,不传的话会直接触发参数缺失的错误。

我们只需要调整两个地方就能完美解决:

1. 修改robot_directory存储类而非实例

把字典里的值改成类本身(不要加括号做实例化操作):

robot_directory = {1: Robot1, 2: Robot2}

2. 在object_creator中正确实例化类并传递name

在函数里先取出对应的类,再调用类并传入name参数来创建实例:

def object_creator(robo_id, name):
    robot_class = robot_directory[robo_id]
    # 调用类并传入name参数完成实例化
    return robot_class(name)

完整修正后的可运行代码

class Robot1:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        return "Hi, I am " + self.name

class Robot2:
    def __init__(self, name):
        self.name = name
    def sayHello(self):
        return "Hello, I am " + self.name

# 存储类本身,而非提前实例化的对象
robot_directory = {1: Robot1, 2: Robot2}

def object_creator(robo_id, name):
    robot_class = robot_directory[robo_id]
    return robot_class(name)

# 测试验证
robo1 = object_creator(1, "Bender")
print(robo1.sayHi())  # 输出: Hi, I am Bender

robo2 = object_creator(2, "Wall-E")
print(robo2.sayHello())  # 输出: Hello, I am Wall-E

这样就能根据传入的robo_id选择对应的类,并且在实例化时正确传递name参数啦。

内容的提问来源于stack exchange,提问作者Tom J Muthirenthi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:43:22