所以我对一个项目有一个想法,但我需要将2个特定类输出的实例放到另外。我想这样做,以便实例获取其输入的是实例的属性,例如:
public static void showClient(){
chat_client client = new chat_client();
client.setVisible(true);
client.setPublicKey(generatedPublicKey);
client.setPrivateKey(generatedPrivateKey);
client.startServer();
}
其中" Class"是这些实例来自的类。
我希望我的问题清楚地表明我的观点,提前感谢您的帮助!
答案 0 :(得分:0)
好吧,您可以设计类构造函数,默认情况下,实例会创建自己的自引用输入实例:
class Class(object):
def __init__(self, input=None):
if input None:
self.input = Class(self)
else:
self.input = input
>>> a = Class()
>>> b = a.input
>>> b.input is a
True
或者,使其更明确,只需在创建第二个实例后在第一个实例上设置输入:
class Class(object):
def __init__(self, input=None):
self.input = input
>>> a = Class()
>>> b = a.input = Class(a)
>>> a.input is b
True
>>> b.input is a
True
答案 1 :(得分:0)
我担心在创建对象b之前,您无法将对象b传递给对象a的构造函数。当然你可以尝试:
a = Class(Class(b(a))
将刚创建的b传递给a的构造函数但是这次你想要将尚未创建的对象a传递给a的构造函数。这也不会奏效。
但这只是一场战斗失败了。要赢得战争,你可以尝试:
a = Class()
b = Class()
a.input = b
b.input = a
现在他们可以互相交谈。
如果你仍想保存两行代码,你可以传递给b的构造函数,它将新创建的b(表示self)附加到a,反之亦然。一个将被赋予empy对象的构造函数,因此它不会做任何连接工具b得到一个这样做。
但为了使代码清晰,我更喜欢第一种解决方案。