2

我最近在学习 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 将数据附加到单个列表中?

4

2 回答 2

4

在 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
    ....
于 2013-03-04T17:29:16.037 回答
1

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

改为这样做。

class pdf(object):
    def __init__(self):
        self.Uno = []
于 2013-03-04T17:30:41.207 回答