【问题标题】:Referencing class instance through lists通过列表引用类实例
【发布时间】:2018-08-11 18:53:26
【问题描述】:

我有两节课。 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】:

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

    代码:

    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)
    

    测试代码:

    p = Province('This is stuff')
    # Examples
    p.makeareas('area1')
    p.makeareas('area2')
    
    for area in p.areas:
        print(area.access_stuff())
    

    结果:

    area1 - This is stuff 
    area2 - This is stuff 
    

    【讨论】:

    • 哇,这是一个非常快的反应。谢谢,这正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2015-02-22
    相关资源
    最近更新 更多