超出范围对象Python

时间:2013-03-04 17:24:56

标签: python object

我最近正在学习python,我遇到了创建对象的问题。我创建了一个名为pdf的类,它有助于解析输入的pdf(工作)。我遇到的问题是,由于我不确定的原因,单独创建的对象正在共享内存空间。

for root, dirnames, filenames in os.walk("../PDF_DB_100//"):
for filename in filenames:
    if filename.endswith('.pdf'):
        print filename
        pdf("../PDF_DB_100/"+filename).get_info()
        count+=1
        if count == 10:
            break

class pdf(object):
    Uno = []
    Dos = []
    Tress = []
    Quatro = []

    def __init__(self,path):
       operations, mostly appends onto the above variables
    ....

此代码遍历.pdf的目录并为10 pdf创建一个pdf对象。但是,由于未引用pdf对象,因此一旦get_info()行完成,它就不会超出范围。为什么单独的pdf会将数据附加到单个列表中?

2 个答案:

答案 0 :(得分:3)

在Python类中,在类顶级定义的属性是类本身的属性,而不是实例。

具体你想要的是

class pdf(object):
    def __init__(self,path):
      self.S_Linc = []
      self.Short_Legal = []
      self.Title_Number = []
      self.Legal_Description = []

       operations, mostly appends onto the above variables
    ....

答案 1 :(得分:1)

问题是你是在对象内部而不是在构造函数内部声明列表。

改为做。

class pdf(object):
    def __init__(self):
        self.Uno = []