Назначение глобальной переменной в классе python - PullRequest
0 голосов
/ 08 февраля 2020

Мой XmlParser получает имя файла и затем читает по имени файла, а затем создает мой суп для различных методов. Я пытаюсь сделать суп глобальной переменной. Но я ссылаюсь на переменную конструктора и отвечаю: «NameError: имя« self »не определено»

from bs4 import BeautifulSoup
from tools import read_file


class XmlParser:
    soup = BeautifulSoup(self.xml_file, self.parser_type)

    def __init__(self, file_name, parser_type):
        self.xml_file = read_file(file_name)
        self.parser_type = parser_type

Как я могу создать свою переменную супа до назначения конструктора?

1 Ответ

2 голосов
/ 08 февраля 2020

Мой XmlParser получает имя файла и затем читает по имени файла, а затем создает мой суп для различных методов.

В этом случае экземпляр BeautifulSoup должен быть единственной переменной класса. В ваших методах вы можете ссылаться на него как self.soup. Нет необходимости подвергать file_name и parser_type каким-либо другим методам, поскольку они указываются c только для экземпляра BeautifulSoup, который происходит внутри конструктора __init__.

from bs4 import BeautifulSoup
from tools import read_file

class XmlParser:    
  def __init__(self, file_name, parser_type):
    xml_file = read_file(file_name)
    self.soup = BeautifulSoup(xml_file, parser_type)

  def method_1(self):
    # access self.soup here

  def method_2(self):
    # access self.soup here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...