我有一个方法可以接受单个对象或对象列表。我想添加传递给另一个列表的任何内容。目前,我的方法是这样的:
def appendOrExtend(self, item):
if type(item).__name__ == "list":
self.list.extend(item)
else:
self.list.append(item)
在我看来,应该有一种更 Pythonic 的方法来实现这一点,你能推荐一个吗?
请您参考如下方法:
def append(self, item):
self.list.append(item)
def extend(self, item):
self.list.extend(item)
底线:没有同时完成这两件事的方法。它会混淆并使您的方法变得不那么有用,而不是更有用。它也更难测试和维护。此外,您函数的用户已经知道她是想使用追加还是扩展,因此通过提供单一方法,您将丢弃调用者/用户已经知道的信息。
另一种编写方式是使用打包/解包参数语法:
def append(self, *items):
self.list.extend(items)
这样你就可以调用这个方法了
x.append('single item')
或
x.append(*list_of_items)
