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 = [] |