具有多个文件的Python抽象工厂模式

问题描述 投票:0回答:1

在我的项目中,我主要有 3 个独立的文件。我的项目目录

Directory/
|-main.py
|-scrape/
  |--ScrapeFactory.py
  |--ScrapeFromAmazon.py

ScrapeFactory.py 包括

from abc import ABC, abstractmethod
from .ScrapeFromAmazon import ScrapeFromAmazon

class Scrape(ABC):
    
    def __init__(self):
        print("ScrapeFactory initialized")

    """Abstract Factory Interface"""
    @abstractmethod
    def create_scrape_products_from_category(self, url, header):
        pass

class ScrapeFactory(ABC):
    """
    The factory represents combination of scrape product 
    from category and scrape product from product detail page.
    """

    @abstractmethod
    def create_scrape_products_from_category(self) -> Scrape:
        """
        Returns a new scrape product from 
        category belonging to this factory.
        """
        pass

此外,ScrapeFromAmazon.py 还包括

from bs4 import BeautifulSoup
import requests
import pandas as pd
import numpy as np
from .ScrapeFactory import ScrapeFactory

class ScrapeFromAmazon(ScrapeFactory):
    """
    Factory aimed at scraping products from Amazon
    """

    def calculate_iterate_page_count(self):
        response = requests.get(self.url, headers=self.header)
        soup = BeautifulSoup(response.content, 'html.parser')
        product_number_div = soup.find('div', class_='paginatorStyle-OQbSBb_oQve3e_k9LEg5').text
        product_number = product_number_div.split(" ")[3]
        if product_number.find("+"):
            product_number = product_number[:len(product_number)-1]
        self.iterate_page_count = int(int(product_number) / 48)

我的Python版本:

Python 3.12.2

当我运行代码时,出现错误:

ImportError: cannot import name 'ScrapeFactory' from partially initialized module 'scrape.ScrapeFactory' (most likely due to a circular import)

如何解决?

我尝试init.py,

python-3.x abstract-factory
1个回答
0
投票

您遇到了循环导入

ScrapeFactory.py
正在导入
ScrapeFromAmazon
,但
ScrapeFromAmazon.py
也从
ScrapeFactory.py
导入。

这会导致 python 无法解析的循环依赖。

© www.soinside.com 2019 - 2024. All rights reserved.