相同类的从属实例

时间:2018-01-06 13:30:40

标签: python class

所以我对一个项目有一个想法,但我需要将2个特定类输出的实例放到另外。我想这样做,以便实例获取其输入的是实例的属性,例如:

public static void showClient(){
        chat_client client = new chat_client();
        client.setVisible(true);
        client.setPublicKey(generatedPublicKey);
        client.setPrivateKey(generatedPrivateKey);
        client.startServer();
    }

其中" Class"是这些实例来自的类。

我希望我的问题清楚地表明我的观点,提前感谢您的帮助!

2 个答案:

答案 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得到一个这样做。

但为了使代码清晰,我更喜欢第一种解决方案。