0
class lista(object):
    listanumere=[]
    def printer(self):
        print self.listanumere
    def adds(self,numar):
        self.listanumere.append(numar)

class movies():
    def __init__(self,ide,nume):
        self.__nume=nume
        self.__ide=ide

listarez=lista
a=movies(1,"David")
lista.adds(a)
lista.printer()

错误:

TypeError: unbound method adds() must be called with lista instance as first argument (got movies instance instead)  

所以我的问题是:如何创建一个包含在另一个类中定义的元素列表的类,例如一个包含电影列表的类和一些修改列表的方法,例如添加新电影或删除带有一定的身份证?

4

2 回答 2

6

您似乎混淆了类方法和实例方法。你可能想做:

listarez = lista()

接着

listarez.adds(a)
listarez.printer()
于 2012-11-07T12:47:26.880 回答
1

简短的回答:

class lista(object):
    listanumere=[]
    def printer(self):
        print "\n".join( [ str(elem)for elem in self.listanumere ] )
    def adds(self,numar):
        self.listanumere.append(numar)

class movies():
    def __init__(self,ide,nume):
        self.__nume=nume
        self.__ide=ide
    def __str__(self):
        return ":".join( [ str(self.__nume) , str(self.__ide) ] )


listarez=lista()
a=movies(1,"David")
b=movies(2,"Goliath")

listarez.adds(a)
listarez.adds(b)

listarez.printer()

如果我是你,我会使用从字典派生的类(例如 {'ID string' : movie object })和正确的重载方法(init、str、..)。这样你就可以利用诸如 itertools 等标准方法。

于 2012-11-07T12:54:12.527 回答