我想重載UserList方法(添加,附加,擴展)來獲取沒有重複。由於某種原因,我仍然得到兩次alpha
。我甚至得到一個空列表,如果我只是嘗試打印original_list
這是我寫的代碼:UserList重載python 3.x
#!/usr/bin/env python
#coding: utf-8
from collections import UserList
class Ulist(UserList):
def __init__(self, info = []):
UserList.__init__(self)
self.info = info
def __add__(self, something_new):
for i in something_new:
if i in self:
print('%r This is already in the list.' % (i))
else:
return UserList.__add__(self, something_new)
def append(self, something_new):
if something_new in self:
print('%r This is already in the list.' % (i))
else:
return UserList.append(self, something_new)
def extend(self, something_new):
for i in something_new:
if i in self:
print('%r This is already in the list.' % (i))
else:
return UserList.extend(self, something_new)
# let's test how it works
original_list = Ulist(['alpha'])
original_list.__add__([444])
original_list.append('alpha')
original_list.append('I_dont_exist_yet')
original_list.append(0)
original_list.extend([98, 98, 234,'alpha','beta','I_am_totally_new',33])
print(original_list)
免責聲明:我知道人們已經要求有關的UserList和方法重載類似的問題。我分析了這些問題,但仍然無法弄清楚爲什麼我的代碼不起作用。另外,我是Python的新手。
在'extend'函數中,您想要逐個添加每個新元素。不要調用'UserList.extend(something_new)',調用'UserList.append(i)'。 –
a)爲什麼不直接繼承''list''本身?不再需要UserList。 b)如果你不想重複,使用''set''類型。 –
謝謝。所有的建議都很有幫助,但我試圖重載這些特定的方法,而不想使用其他任何方法。 –