gpt4 book ai didi

python - 如何访问另一个对象内部的对象的方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:02 24 4
gpt4 key购买 nike

我正在编写一个由“主”对象组成的程序,该对象跟踪并操作许多较小的对象。这是一个简化的示例:

class My_obj:

def __init__(self, a):
self.a = a

def set_a(self, a):
self.a = a

def get_a(self):
return self.a

class Master:

def __init__(self, list_):
self.obj_list = []
for value in list_:
obj = My_obj(value)
self.obj_list.append(obj)

m = Master([0, 1, 2])

# How do I get (or set) the value of <a> from one of the My_obj instances
# within the new Master object?

我知道有两种方法可以做到这一点。第一个是向 Master 添加一个返回请求对象的方法:

    def get_obj(self, index):
return self.obj_list[index]

然后我可以直接调用该对象的任何方法。然而,这似乎很危险:如果后续代码删除了返回的对象,然后 Master 中的某些内容尝试查找它,程序就会崩溃。

编辑:事实证明它不会崩溃,但仍然是一个问题;请参阅评论。

第二种方法是用 Master 中相应的方法包装每个方法:

    def set_a(self, index, a):
self.obj_list[index].set_a(a)

def get_a(self, index):
return self.obj_list[index].get_a()

这似乎是多余的,并且在更复杂的场景中会变得非常乏味。

有人知道访问这些方法的更好方法吗?

最佳答案

print m.obj_list[0].get_a() # prints 0
m.obj_list[0].set_a(5)
print m.obj_list[0].get_a() # prints 5
# access all the "a"'s
a_s = [o.get_a() for o in m.obj_list]

关于python - 如何访问另一个对象内部的对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24297388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com