我可以访问包含另一个类的对象列表的对象的属性吗

2024-09-22 20:34:36 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样的东西:

class A:
    def __init__(self, name, bs):
        self.aname = name
        self.bees = bs
    aname = ''
    bees = []

class B:
    def __init__(self, name):
        self.bname= name
    bname= ''
    def get_aname():
        return aname # can I get this somehow 

aobj = A('name of class A', [B('1'), B('2'), B('3')])

aobj.bees[0].get_aname()  # result should be 'name of class A'

有没有办法让我知道A班的名字


Tags: ofnameselfgetreturnbsinitdef
1条回答
网友
1楼 · 发布于 2024-09-22 20:34:36

aname是一个实例变量。要从B的实例访问它,您需要将A的实例传递给B,以便您的B实例访问aname

但是不能在实例化前传递A的实例。相反,您可以定义B实例的列表,并在后续步骤中将它们添加为aobj的属性:

class A:
    def __init__(self, name, bs=None):
        self.aname = name
        self.bees = bs
    aname = ''
    bees = []

class B:
    def __init__(self, name, a_inst):
        self.a_inst = a_inst
        self.bname= name
    bname= ''
    def get_aname(self):
        return self.a_inst.aname

aobj = A('name of class A')
L = [B('1', aobj), B('2', aobj), B('3', aobj)]
aobj.bees = L

aobj.bees[0].get_aname()  # 'name of class A'

相关问题 更多 >