嗨,我正在学习计算机科学,我要求我必须在python中编写两个具有相同名称的函数.我该怎么办?
class QueueCards: def __init__(self): self.cards = [] def Add(self, other): self.cards.insert(0, other) def Add(self, listCards, numCards): for i in numCards: card = listCards.GetCard(i) self.Add(card)
Count()
是队列的大小.谢谢.
你不能这样做.至少,不在同一名称空间(即:相同的模块,或相同的类).看来你正试图用一种语言学习一些东西,并试图将它应用于python.
您可以做的是Add
采用可变数量的参数,因此您可以根据传入的内容执行不同的操作.
def Add(self, *args): if len(args) == 1: item = args[0] self.cards.insert(0, item) elif len(args) == 2): listCards, numCards = args for i in numCards: card = listCards.GetCard(i) self.cards.insert(0, card)
我个人认为最好有两个函数,因为它避免了歧义并有助于提高可读性.例如, AddCard
和AddMultipleCards
.
或者,甚至更好,一个功能,您可以用于任意数量的卡.例如,您可以定义Add
以获取卡片列表,然后将它们全部添加:
def Add(self, *args): for card in args: self.cards.insert(0, card)
然后,用一张卡调用它:
self.Add(listCards.GetCard(0))
...或者,卡片列表:
list_of_cards = [listCards.GetCard(i) for i in range(len(listCards))] self.Add(*list_of_cards)
你似乎要做的事情叫做函数重载,这根本不是Python支持的.有关python中函数重载的更多信息,请参阅此问题:Python函数重载