【问题标题】:Why is this simple python class not working?为什么这个简单的 python 类不起作用?
【发布时间】:2010-12-08 21:20:57
【问题描述】:

我正在尝试创建一个获取数字列表的类,然后在需要时将它们打印出来。我需要能够从类中创建 2 个对象以获得两个不同的列表。这是我到目前为止所拥有的

class getlist:   
    def newlist(self,*number):
        lst=[]
        self.number=number
        lst.append(number)

    def printlist(self):
        return lst

对不起,我不是很清楚,我对 oop 有点陌生,请你帮我,因为我不知道我做错了什么。谢谢。

【问题讨论】:

  • 缩进在 Python 中很重要,所以这个例子永远不会运行。请修复它,以便我们看到您要执行的操作。
  • 这里为什么需要对象,列表对你来说不够用?
  • @SilentGhost - 虽然一般来说是一个有效的观点,但迈克尔可能正在制作一个玩具程序作为学习练习。

标签: python class list


【解决方案1】:

在 Python 中,当您在对象内部编写方法时,您需要在所有对属于该对象的变量的引用前加上 self. - 像这样:

class getlist:   
    def newlist(self,*number):
        self.lst=[]
        self.lst += number #I changed this to add all args to the list

    def printlist(self):
        return self.lst

您之前的代码是创建和修改一个名为 lst 的局部变量,因此它会在调用之间“消失”。

另外,通常会创建一个构造函数,它具有特殊的名称__init__

class getlist:   
    #Init constructor
    def __init__(self,*number):
        self.lst=[]
        self.lst += number #I changed this to add all args to the list

    def printlist(self):
        return self.lst

最后,像这样使用

>>> newlist=getlist(1,2,3, [4,5])
>>> newlist.printlist()
[1, 2, 3, [4,5]]     

【讨论】:

    【解决方案2】:

    您应该使用“self.lst”而不是“lst”。没有“self”,它只是当前方法的内部变量。

    【讨论】:

    • 太好了,好像整理好了,谢谢大家的帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多