【问题标题】:Python data list issuePython数据列表问题
【发布时间】:2013-01-30 20:27:23
【问题描述】:

在 python 中处理自定义列表类,如

class ListData:
        def __init__(self):
                 self.data = []

        def add(self, x):
                 self.data.append(x)

        def delete(self, x):
                 self.data.remove(x)

测试时,总是返回 None :

from list import ListData

listdata = ListData()


mylist = [34, 32, 34, 89]
mylist = listdata.add(2)
mylist = listdata.add(5)

print mylist # Prints None

【问题讨论】:

    标签: python list error-handling


    【解决方案1】:

    您可以更改您的 API 以将其打印为列表。您可以阅读以下内容

    Immutable vs Mutable types

    class ListData:
            def __init__(self):
                     self.data = []
    
            def add(self, x):
                     self.data.append(x)
    
            def delete(self, x):
                     self.data.remove(x)
    
            def data(self):
                return self.data
    
    
    
    
    a = ListData()
    a.add(1)
    a.add(2)
    print a.data
    

    将输出:

    [1, 2]

    【讨论】:

      【解决方案2】:

      您不会从adddelete 方法返回任何内容,因此将它们的返回值分配给mylist 会留下None。摆脱额外的分配,你的代码就可以工作了。

      mylist = [34, 32, 34, 89]
      listdata.add(2)
      listdata.add(5)
      
      print mylist
      

      或者,您可以修改方法以返回 self,尽管这样做没有多大价值。

      def add(self, x):
          self.data.append(x)
          return self
      
      def delete(self, x):
          self.data.remove(x)
          return self
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多