创建一个对象,引用创建它的对象

时间:2014-04-12 01:36:54

标签: python object

我有一个程序,其中一个对象创建另一个对象。但是,创建的第二个对象需要能够访问第一个对象。这可能吗?

EG(伪代码)

class parentObject():
    parentVar = 1
    # Create Child
    x = childObject()

class childObject():
    #Assign Var to the Var of the childs parent
    childVar = parent.parentVar    

>>> x.childVar = 1

有没有一种直截了当的方法来做到这一点?

更新:

我不想在这个类中使用,我需要能够访问创建它的实际对象,因为从该类创建的每个对象都有不同的值。

2 个答案:

答案 0 :(得分:4)

为什么不继承这门课?

class parentObject():
    parentVar = 1

class childObject(parentObject):
    childVar = parentObject.parentVar

>>> x = childObject()
>>> print(x.childVar)
1

如果您要使用不同的类实例,则应该这样做:

class parentObject(object):
    def __init__(self):
        self.parentVar = 1

class childObject(parentObject):
    def __init__(self):
        super(childObject, self).__init__()
        self.childVar = self.parentVar

>>> x = childObject()
>>> print(x.childVar)
1

答案 1 :(得分:1)

如果您想要引用"父母"类,但继承是不合逻辑的,考虑将self发送到构造函数:

class Room:
    def __init__(self, name):
        self.name = name
        self.furniture = []

    def add_chair(self):
        self.furniture.append(Chair(self))

    def __str__(self):
        return '{} with {}'.format(self.name, self.furniture)


class Chair:
    def __init__(self, room):
        self.room = room
    def __str__(self):
        return 'Chair in {}'.format(self.room.name)


r = Room('Kitchen')
r.add_chair()
r.add_chair()

print r
print r.furniture[0]

<强>输出:

Kitchen with [<__main__.Chair instance at 0x01F45F58>, <__main__.Chair instance at 0x01F45F80>]
Chair in Kitchen