Python - 整理这个附加/扩展的条件

2024-05-04 02:48:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个方法,我可以接受单个对象或对象列表。我想添加传递到另一个列表的任何内容。目前,我的方法如下:

def appendOrExtend(self, item):
  if type(item).__name__ == "list":
    self.list.extend(item)
  else:
    self.list.append(item)

在我看来,应该有一个更像Python的方法来实现这一点,你能建议一个吗?在


Tags: 对象方法nameself内容列表ifdef
3条回答

Zach提供了一种检查字体更优雅的解决方案。但是,我将介绍两个独立的方法addOneElement和{}(或类似的方法)。在我看来,这使它更具可读性。在

def append(self, item):
    self.list.append(item)
def extend(self, item):
    self.list.extend(item)

底线是:不要有一种方法同时做到这两件事。它会使你的方法变得不那么有用,反而会变得更有用。它也更难测试和维护。另外,你的函数的用户已经知道她是想使用append还是extend,所以通过提供一个单一的方法,你就放弃了你的调用者/用户已经知道的信息。在

另一种写入方法是使用打包/解包参数语法:

^{pr2}$

这样您就可以将方法调用为

x.append('single item')

或者

x.append(*list_of_items)
if isinstance(item, list):

相关问题 更多 >