【问题标题】:Appending a list to a class object (python)将列表附加到类对象(python)
【发布时间】:2021-12-10 06:15:51
【问题描述】:

无法使用以下类执行以下代码:

预期结果 = [1, 2, 3, 4, 90, 25] 给定结果 = ma​​in.ArrayList object at 0x7f9f1439acd0>

我怎样才能阻止这种情况发生?没有内置的extend()

任何帮助表示赞赏

class ArrayList:
    def __init__(self):
        self.inArray = []
        self.count = 0

    def appendAll(self, e):
        newArray = [0 for i in range(len(self.inArray)+1)]
        for i in range(len(self.inArray)):
            newArray[i] = self.inArray[i]
            newArray[len(self.inArray)] = e
            self.inArray = newArray

ls = [1, 2, 3, 4]
ls = ArrayList()
ls.appendAll([90, 25])
print(ls)

【问题讨论】:

标签: python list class object arraylist


【解决方案1】:

这是因为 Python 默认返回对用户定义的类对象的引用,而不是它的数据成员。

这就是我认为你想要实现的...

class ArrayList:
    def __init__(self, inArray: list = []):
        self.inArray = inArray
        self.count : int = 0

    def appendAll(self, newArray: list):
        self.inArray.extend(newArray)   # extend() can add multiple values at a time
    
    def __str__(self):                  # __str__ is a magic/dunder method (Special function reserved in Python which gets activated when you try to print an object of it's class)
        return str(self.inArray)


if __name__=='__main__':
    ls = ArrayList([1, 2, 3, 4])    # Initialize ArrayList object with default value
    ls.appendAll([90, 25])          # Add more values
    print(ls)

我已经更正了您的代码,并为您添加了以下概念:
1 Type-Hinting
2.'ma​​in'函数

【讨论】:

  • 这是我想要实现的,但没有 extend() 因此为什么 appendAll 中的循环
  • 你在 appendAll 中尝试做的事情已经在 python 中实现为 extend() 方法
  • 我明白,但我正在制作自己的扩展函数(到目前为止,我已经创建了自己的追加函数,该函数扩展一个元素但不是多个元素,并创建了删除、获取函数等。
  • 这就是我的意思:stackoverflow.com/questions/49225343/…@HIMANSHUPANDEY
猜你喜欢
  • 2015-11-14
  • 2017-11-17
  • 2016-03-09
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多