通过列表引用类实例

问题描述 投票:3回答:1

我有两节课。 Province创建了一堆Areas实例,并将它们放入self.areas列表中。我想要一个Areas实例来访问Province实例的属性(或其他数据),该实例在其self.areas列表中包含它。想象:

class Province:
    def __init__(self, stuff="spam"):
        self.stuff = stuff
        self.areas = list()
    def makeareas(self):
        # make instances of Areas and put them in self.areas

class Areas:
    def __init__(self):
        pass
    def access_stuff(self):
        # access stuff of the Province where it is in its list

我该如何做到这一点?更重要的是,这甚至是一种正确的方法吗?有没有更合理,更简单的方法来做我不知道的事情?

python arrays python-3.x class oop
1个回答
2
投票

实例化Area时,传递给province的引用,如:

Code:

class Province:
    def __init__(self, stuff="spam"):
        self.stuff = stuff
        self.areas = list()

    def makeareas(self, area):
        self.areas.append(Areas(area, self))

class Areas:
    def __init__(self, area, province):
        self.area = area
        self.province = province

    def access_stuff(self):
        # access stuff of the Province where it is in its list
        return '%s - %s ' %(self.area, self.province.stuff)

Test Code:

p = Province('This is stuff')
# Examples
p.makeareas('area1')
p.makeareas('area2')

for area in p.areas:
    print(area.access_stuff())

Results:

area1 - This is stuff 
area2 - This is stuff 
© www.soinside.com 2019 - 2024. All rights reserved.