我有一个方法,我将接受单个对象或对象列表.我想添加传递给另一个列表的内容.目前,我的方法如下所示:
def appendOrExtend(self, item):
if type(item).__name__ == "list":
self.list.extend(item)
else:
self.list.append(item)
Run Code Online (Sandbox Code Playgroud)
在我看来应该有更多的Pythonic方式实现这一点,你能提出一个吗?
nos*_*klo 10
def append(self, item):
self.list.append(item)
def extend(self, item):
self.list.extend(item)
Run Code Online (Sandbox Code Playgroud)
一句话:没有办法做两件事.它会让您的方法变得有用,而不是更有用.它也更难测试和维护.此外,您的功能的用户已经知道她是否想要使用追加或扩展,因此通过提供单一方法,您将丢弃您的呼叫者/用户已经知道的信息.
另一种编写方式是使用打包/解包参数语法:
def append(self, *items):
self.list.extend(items)
Run Code Online (Sandbox Code Playgroud)
这样你可以调用方法
x.append('single item')
Run Code Online (Sandbox Code Playgroud)
要么
x.append(*list_of_items)
Run Code Online (Sandbox Code Playgroud)