Почему я не могу импортировать функцию из класса в том же каталоге? - PullRequest
0 голосов
/ 22 апреля 2020

В моем builder / graph_builder.py у меня есть класс

class GraphBuilder(object):

  def __init__(self):
    pass

  @staticmethod
  def parse(path):
     ...
     return path

Затем в той же директории у меня есть linker.py, и я хочу импортировать функцию 'parse':

 from builder.graph_builder.GraphBuilder import parse

Я нахожусь в PyCharm, и он запрашивает это «из builder.graph_builder». виден, но после этого он не может ссылаться на GraphBuilder и функцию разбора.

Почему это так?

Ответы [ 3 ]

3 голосов
/ 22 апреля 2020

Синтаксис from MODULE import NAME, поэтому

from builder.graph_builder import GraphBuilder

будет работать, но

from builder.graph_builder.GraphBuilder import parse

не будет - builder.graph_builder.GraphBuilder является не модулем.

2 голосов
/ 22 апреля 2020

Невозможно импортировать метод из класса в python

Вы должны сначала импортировать класс и после вызова метода. Это случается, даже если это метод stati c.

1 голос
/ 22 апреля 2020

Поскольку graph_builder находится в том же каталоге, вы можете ссылаться на graph_builder напрямую.

Кроме того, GraphBuilder является классом, поэтому вы можете создавать и сохранять функцию анализа в переменной

Вы можете попробовать как это:

from graph_builder import GraphBuilder


if __name__=='__main__':
    path="C:\\Users\\"
    parse=GraphBuilder().parse
    test=parse(path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...