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 に答える