gpt4 book ai didi

python - Python中的两个同名函数

转载 作者:行者123 更新时间:2023-11-28 19:48:19 26 4
gpt4 key购买 nike

我有一个要求,我必须用 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)

我个人认为最好有两个函数,因为这样可以避免歧义并提高可读性。例如,AddCardAddMultipleCards

或者,也许更好的是,您可以使用一个函数来处理任意数量的卡片。例如,您可以定义 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 function overloading

关于python - Python中的两个同名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34546775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com