我有一个程序,其中一个对象创建另一个对象。但是,创建的第二个对象需要能够访问第一个对象。这可能吗?
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
有没有一种直截了当的方法来做到这一点?
更新:
我不想在这个类中使用,我需要能够访问创建它的实际对象,因为从该类创建的每个对象都有不同的值。
答案 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