这是我的代码:
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成员获取存储库信息的应用程序。
当我输出数组时,我发现数组没有初始化并且存在重复元素。我该如何解决这个问题?
答案 0 :(得分:2)
您的langs
是一个类变量,而不是实例变量,因此它链接到类定义(因此在任何地方共享),而不是任何特定的实例类。
你可能想要更像的东西:
class LangsList(sgmllib.SGMLParser):
def __init__(self, *args, **kwargs):
super(LangsList, self).__init__(*args, **kwargs)
self.is_span = ""
self.langs = []
您在初始化时创建实例变量。