操纵类的实例会改变整个类

时间:2016-10-19 11:52:32

标签: python-2.7 class instance instance-variables self

所以我在挣扎。我已经看过很多关于这个主题的帖子,但经过几个小时的努力解决这个问题,我无法弄清楚这一点。以下是我的一些代码片段。我希望能够改变一个类的实例,而不会改变另一个实例,而且我很快就会出现

class voter:
    def __init__(self, iPositon, jPosition, affiliation):
        self.affiliation = affiliation
        self.iPositon = iPositon
        self.jPosition = jPosition

class district:
    def __init__(self, *listOfVotersPassed):
        # super(district, self).__init__()
        self.listOfVoters = []
        for x in listOfVotersPassed:
            self.listOfVoters.append(x)     


class city:
    def __init__(self, *listOfDistrictsPassed):
        self.listOfDistricts = []
        for x in listOfDistrictsPassed:
            self.listOfDistricts.append(x)

def main():
    # I have a list  of class district that I pass to city()
    startCity = city(*startCityList)
    solutionCity = city(*solutionCityList)


    print solutionCity.listOfDistricts[0].listOfVoters[0].affiliation       # Democrat
    print startCity.listOfDistricts[0].listOfVoters[0].affiliation          # Democrat

    solutionCity.listOfDistricts[0].listOfVoters[0].affiliation = "Republican"

    print solutionCity.listOfDistricts[0].listOfVoters[0].affiliation       # Republican
    print startCity.listOfDistricts[0].listOfVoters[0].affiliation          # Republican



if __name__ == "__main__":
    main()

修改。 所以我被问到我是如何创建城市实例的。我有一个正在读的文件,每行都有R或D.

file = open(fileName)

# import contents
startVoterList = []
solutionVoterList = []

for line in file:
    for house in line:
        if " " in house:
            pass
        elif "\n" in house:
            pass
        else:
            startVoterList.append(house)
            solutionVoterList.append(house)

我还更新了类,现在每个类都采用以下格式。除了每个类className之后的“(object)”之外没有任何更改。

class voter(object):
    def __init__(self, iPositon, jPosition, affiliation):
        self.affiliation = affiliation
        self.iPositon = iPositon
        self.jPosition = jPosition

0 个答案:

没有答案