Невозможно получить метод 'learn' из Pool.py - PullRequest
0 голосов
/ 30 августа 2018

Я реализую код

import sys
sys.path.append('/home/stepfourward/naivebayes/Naive-Bayes/')
from NaiveBayes import *
import os

DClasses = ["python",  "java",  "hadoop",  "django",  "datascience",  "php"]

base = "learn/"
p = Pool()
for i in DClasses:
    p.learn(base + i, i)

NaiveBayes модуль содержит Pool.py, который имеет функцию learn():

def learn(self, directory, dclass_name):
        """
        directory is a path, where the files of the class with the name dclass_name can be found
        """
        x = DocumentClass(self.__vocabulary)
        dir = os.listdir(directory)
        for file in dir:
            d = Document(self.__vocabulary)
            print(directory + "/" + file)
            d.read_document(directory + "/" + file, learn=True)
            x = x + d
        self.__document_classes[dclass_name] = x
        x.SetNumberOfDocs(len(dir))

но когда я применяю метод p.learn(base + i, i), указанный в приведенном выше коде, я получаю ошибку атрибута.

AttributeError: 'Pool' object has no attribute 'learn'

Как устранить эту ошибку. Спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

Вот правильные шаги для использования указанной библиотеки NaiveBayes после того, как вы клонировали репозиторий, как объяснено в другом месте в папке Naive-Bayes:

Что вы делаете

import sys
sys.path.append('Naive-Bayes/')  # your own path here
from NaiveBayes import *         # NO error here

p = Pool()

выдает ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Pool' is not defined

Что вы должны сделать:

import sys
sys.path.append('Naive-Bayes/')
from NaiveBayes.Pool import Pool # correct import

p = Pool()  # runs OK now

DClasses = ["python",  "java",  "hadoop",  "django",  "datascience",  "php"]

base = "learn/"

for i in DClasses:
    p.learn(base + i, i)

В этой точке (но не раньше) я получаю ожидаемую ошибку, просто потому, что ваши каталоги (например, learn/python) отсутствуют на моем компьютере:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/home/herc/SO/Naive-Bayes/NaiveBayes/Pool.py", line 29, in learn
    dir = os.listdir(directory)
FileNotFoundError: [Errno 2] No such file or directory: 'learn/python'

но ясное сообщение заключается в том, что объект Pool и метод learn в Pool.py действительно доступны.

Протестировано с Python 3.4.3 в Ubuntu ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...