python子类无法从超类导入超类

2024-09-29 23:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

首先我很可能会犯一个可怕的错误。但我们走吧!你知道吗

我的超类(project/src)/mlbase.py文件)你知道吗

from preprocessing import PreProcessing

class MLBase:
  preProcessing = None

  def __init__(self,preprocessingOptions):
    self.preProcessing = PreProcessing(preProcessingOptions)
    # and more stuff here...

我的子类(project/src)/预处理.py)你知道吗

from mlbase import MLBase
class PreProcessing(MLBase):
  def __init__(self,options):
     #processing options here... 
     pass 

我的脚本是实例化一切(项目/主.py)你知道吗

from src.mlbase import MLBase

mlb = MLBase(preProcessingOptions = {})

目录

  """

  project
  |
  + src
    |
    + mlbase.py
    |
    + preprocessing.py 
  |
  + main.py

  """

如你所见。目标是从超类实例化子类。但是当src/preprocessing.py模块尝试从src.mlbase.py导入MLBase类时,我收到以下错误:

ImportError: cannot import name MLBase

为什么会这样?你知道吗


Tags: frompyimportselfsrcprojectinitdef
2条回答

只是有点拼写错误。您声明了class MBase,但试图导入MLBase。您只需将超类文件更改为:

from preprocessing import PreProcessing

class MLBase: #Note that it's "MLBase", not "MBase"
  preProcessing = None

  def __init__(self,preprocessingOptions):
    self.preProcessing = PreProcessing(preProcessingOptions)
    # and more stuff here...

解决方案是在构造函数方法中使用from preprocessing import PreProcessing导入预处理类!我不知道为什么!我真的很想明白!你知道吗

在mlbase模块中:

class MLBase:
    def __init__(self,preProcessingOptions):
        from preprocessing import Preprocessing
        # more stuff

在预处理模块中

from mlbase import MLBase

class PreProcessing(MLBase):
    def __init__(self,preProcessingOptions):
        # more stuff

对我来说太奇怪了!你知道吗

相关问题 更多 >

    热门问题