为其他类的实例传递一个“self”类?

时间:2018-05-04 17:10:29

标签: python

从现有代码中,我需要从另一个类中的类创建实例,而初始化被调用类所需的大量信息都包含在调用者中。

将调用者类的某些属性传递给被调用类的方法可以像下面的示例一样将self作为参数传递,它会完成预期的操作,我想知道它是否正确或是否有没有更好的方法呢?

class A:
    def __init__(self):
        self.x = 1
        self.y = 10
        self.myObj = B(self)

class B:
    def __init__(self, Obj_from_A):
        self.i = None
        self.j = None
        self.v= Obj_from_A.x
        self.w = Obj_from_A.y

A_obj = A()
print(A_obj.myObj.v, A_obj.myObj.w)

输出:

1 10

1 个答案:

答案 0 :(得分:2)

你的班级按你认为的那样做,除非它可能没有。

(顺便说一句,你的代码没有运行:你没有定义B_Obj

请参阅我在最后添加的额外代码:

class A:
    def __init__(self):
        self.x = 1
        self.y = 10
        self.myObj = B(self)

class B:
    def __init__(self, Obj_from_A):
        self.i = 0
        self.j = 0
        self.v= Obj_from_A.x
        self.w = Obj_from_A.y

A_obj = A()
print(A_obj.myObj.v, A_obj.myObj.w)

A_obj.x = 2  # Now update the x member
print(A_obj.x, A_obj.myObj.v, A_obj.myObj.w)

输出:

1 10
2 1 10

此处A_obj.x已更改,但B的实例已保留以前的值。