2024-05-04 02:48:32 发布
网友
我有一个方法,我可以接受单个对象或对象列表。我想添加传递到另一个列表的任何内容。目前,我的方法如下:
def appendOrExtend(self, item): if type(item).__name__ == "list": self.list.extend(item) else: self.list.append(item)
在我看来,应该有一个更像Python的方法来实现这一点,你能建议一个吗?在
Zach提供了一种检查字体更优雅的解决方案。但是,我将介绍两个独立的方法addOneElement和{}(或类似的方法)。在我看来,这使它更具可读性。在
addOneElement
def append(self, item): self.list.append(item) def extend(self, item): self.list.extend(item)
底线是:不要有一种方法同时做到这两件事。它会使你的方法变得不那么有用,反而会变得更有用。它也更难测试和维护。另外,你的函数的用户已经知道她是想使用append还是extend,所以通过提供一个单一的方法,你就放弃了你的调用者/用户已经知道的信息。在
另一种写入方法是使用打包/解包参数语法:
这样您就可以将方法调用为
x.append('single item')
或者
x.append(*list_of_items)
if isinstance(item, list):
Zach提供了一种检查字体更优雅的解决方案。但是,我将介绍两个独立的方法}(或类似的方法)。在我看来,这使它更具可读性。在
addOneElement
和{底线是:不要有一种方法同时做到这两件事。它会使你的方法变得不那么有用,反而会变得更有用。它也更难测试和维护。另外,你的函数的用户已经知道她是想使用append还是extend,所以通过提供一个单一的方法,你就放弃了你的调用者/用户已经知道的信息。在
另一种写入方法是使用打包/解包参数语法:
^{pr2}$这样您就可以将方法调用为
或者
相关问题 更多 >
编程相关推荐