数组尚未初始化

时间:2015-02-18 19:52:20

标签: python python-2.7

这是我的代码:

class LangList(SGMLParser):
    is_span = ""
    langs = []
    def start_span(self, attrs):
        for key, value in attrs:
            if key == 'class' and value == 'lang':
                self.is_span = 1
    def end_span(self):
        self.is_span = ""
    def handle_data(self, text):
        if self.is_span:
            self.langs.append(text)

...

for key in my_repositories.repositories.keys():
    print key

    each_repository_content = urllib2.urlopen(my_repositories.repositories[key]).read()

    my_repository = LangList()
    my_repository.feed(each_repository_content)

    print my_repository.langs

结果是:

forensic_tools
['Python']
google
['Python', 'Python']
ListServices
['Python', 'Python', 'Java', 'Perl']
win32-assembly-projects
['Python', 'Python', 'Java', 'Perl', 'C']
...

我正在编写一个从github成员获取存储库信息的应用程序。

当我输出数组时,我发现数组没有初始化并且存在重复元素。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您的langs是一个类变量,而不是实例变量,因此它链接到类定义(因此在任何地方共享),而不是任何特定的实例类。

你可能想要更像的东西:

class LangsList(sgmllib.SGMLParser):
    def __init__(self, *args, **kwargs):
        super(LangsList, self).__init__(*args, **kwargs)
        self.is_span = ""
        self.langs = []

您在初始化时创建实例变量。