当前位置:  开发笔记 > 编程语言 > 正文

两个函数同名python

如何解决《两个函数同名python》经验,为你挑选了1个好方法。

嗨,我正在学习计算机科学,我要求我必须在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()是队列的大小.谢谢.



1> Bryan Oakley..:

你不能这样做.至少,不在同一名称空间(即:相同的模块,或相同的类).看来你正试图用一种语言学习一些东西,并试图将它应用于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函数重载

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有