超出范围的对象python

Out of Scope Objects Python

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
    ....

此代码将遍历dir for.pdf并为10个pdf创建一个pdf对象。但是,既然PDF对象没有被引用,那么一旦get_info()行完成,它就不应该超出范围。为什么单独的PDF将数据附加到单个列表上?


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

具体来说,你想要的可能是

1
2
3
4
5
6
7
8
9
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
2
3
class pdf(object):
    def __init__(self):
        self.Uno = []