微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 python 中重载构造函数?

如何解决如何在 python 中重载构造函数?

假设我想在 python 中发送一个列表,我将有一个 MyList 类,该类将有 3 个构造函数。发送一个空列表不会返回任何内容,发送一个列表会将其转换为链表,发送一个链表将复制其项目并从中创建另一个链表

任务 1: i) 创建一个包含两个字段的节点类,即一个整数元素和对下一个节点的引用。 ii) 创建一个名为 MyList 的链表抽象数据类型 (ADT)。列表中的元素是由整数类型键(所有键都是唯一的)和对下一个节点的引用组成的节点。

任务 2: 构造函数:(3)

我的列表 ( ) 前提条件:无。 后置条件:这是 MyList 类的认构造函数。此构造函数创建一个空列表。

B. MyList (int [] a) 或 Myst(a) 前提条件:数组不能为空。 后置条件:这是 MyList 类的认构造函数。此构造函数从数组创建一个列表。

c. MyList (MyList a) 或 MyList(a)

前置条件:列表不能为空。 后置条件:这是 MyList 类的认构造函数。此构造函数从另一个列表创建一个列表。

解决方法

对于任务 2:您可以尝试这样的操作,方法是检查类的构造函数中的输入:

class MyList():
    def __init__(self,a=None):
        self.list = []
        if a is None:
            return
        elif isinstance(a,list):
            if len(a) == 0:
                raise ValueError('List cannot be empty.')
            else:
                self.list = a
            return
        elif isinstance(a,MyList):
            if len(a.list) == 0:
                raise ValueError('List cannot be empty.')
            else:
                self.list = a.list.copy()
        else:
            raise TypeError('Unkonw type for a')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。