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

Python中MLP实现场景下,如何在对象方法内调用另一对象属性

如何在connection类的connect方法中访问network实例的output_array属性

嘿,其实你现有的代码思路是对的,但有几个小细节调整后就能让这个逻辑完美跑起来,我给你拆解一下:

1. 先修正参数定义的小问题

你现在在connect方法里用了**network_instance,这是接收关键字参数的语法,但这里我们需要的是直接传入一个network类的实例,所以把参数改成普通位置参数就好,这样调用起来更直观:

class connection: 
    def __init__(self): 
        self.value = 0 
        self.weight = 0 
        self.network_output_index = 0 
    # 把参数改成普通的位置参数,去掉**前缀
    def connect(self, network_instance): 
        # 这里直接访问network_instance的output_array就没问题啦
        network_instance.output_array[self.network_output_index] = self.value * self.weight

2. 确保传入正确的实例对象

接下来,你需要先创建network的实例,再把它传给connect方法,这样network_instance才能正确指向一个带有output_array属性的对象。举个完整的调用例子:

# 初始化一个network对象
my_net = network()
# 初始化一个connection对象
my_conn = connection()
# 设置好连接的索引、输入值和权重
my_conn.network_output_index = 1  # 比如要修改output_array的第二个元素
my_conn.value = 3
my_conn.weight = 4
# 调用connect方法,传入network实例
my_conn.connect(my_net)
# 查看结果,output_array[1]应该是12
print(my_net.output_array)  # 输出 [0, 12, 0, 0]

3. 可选:添加索引越界检查(让代码更健壮)

为了避免不小心设置的network_output_index超出output_array的长度,你可以在connect方法里加个简单的判断,防止程序报错:

def connect(self, network_instance): 
    # 先检查索引是否在合法范围内
    if 0 <= self.network_output_index < len(network_instance.output_array):
        network_instance.output_array[self.network_output_index] = self.value * self.weight
    else:
        raise IndexError(f"索引 {self.network_output_index} 超出output_array的范围,当前数组长度是 {len(network_instance.output_array)}")

本质上,Python里只要你传入的是network类的实例,就可以直接通过实例名访问它的公开属性(比如output_array),核心就是利用对象引用的特性~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:33:41