Nano Hash - криптовалюты, майнинг, программирование

Импорт класса в GAE (Python)

Я знаю, что это очень глупый вопрос. И это все о самых основах. Но, к сожалению, у меня очень мало времени, и я не могу сейчас прочитать книгу о Python.

У меня есть эта проблема. Ну в GAE у вас корневой скрипт main.py.

И у меня есть два класса, которые хранятся в: htmlparser/HTMLParser htmlParser/BfsHTMLParser

И я не могу импортировать их в main.py

Что я делаю не так?

Я делаю:

import htmlparser

Но я ловлю:

NameError: глобальное имя «BfsHTMLParser» не определено

Был бы признателен за любую помощь. Спасибо.

p.s. Я также был бы признателен за любые книжные советы по основам Python, подобные этому :)


  • Я также пробовал import htmlparser.BfsHTMLParser — получаю NameError: global name 'BfsHTMLParser' is not defined 01.02.2012

Ответы:


1
from htmlparser import HTMLParser, BfsHTMLParser

Редактировать Боюсь, что это действительно базовые вещи по Python, и вы не уйдете далеко, не прочитав учебник по Python. Python — это не Java, и проблема здесь в том, что вы импортировали модули, а не классы — в Python это не одно и то же.

Если у вас есть классы с теми же именами, что и файлы модулей, теперь, когда вы импортировали модули, вам нужно будет создать их экземпляры с помощью HTMLParser.HTMLParser или BfsHTMLParser.BfsHtmlParser. Конечно, на самом деле вам не следует так упаковывать классы, но у вас такая ситуация.

01.02.2012
  • Спасибо! Но теперь я ловлю TypeError: 'module' object is not callable 01.02.2012
  • Спасибо. Но как должны классы пакета? Я привык к этой логической иерархии из ActionScript и Java, да. И у меня есть свобода упаковать их по-другому. 01.02.2012

  • 2

    У вас есть __init__.py в каталоге htmlparser ??

    01.02.2012
  • Не-е-е :) А что в нем должно быть? 01.02.2012
  • Попробуйте просто пустой файл для начала 02.02.2012
  • Я получаю тогда line 58, in get parser = BfsHTMLParser() TypeError: 'module' object is not callable 02.02.2012

  • 3

    Хорошо, в настоящее время я перешел на BeautifulSoup. Поместите BeatifulSoup в корень, и он работает.

    Но все же вопрос упаковки логических блоков кода остается открытым.

    02.02.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..