python - 使用继承的python包
问题描述
我知道这个论点是微不足道的,并且在很多帖子中都得到了处理,但是我已经阅读了它,但我仍然不清楚如何将文件夹中的内容视为包...举这个例子(我知道有 *rc 文件产生相同的结果..) 我已经定义了一个名为的基类basequalityplot
,我在其中定义了自定义绘图所需的所有东西(我在其中定义了共同点参数(稳定或变量),更新 rcParams )在类名质量图中,其中包含基类和更多...:名为 basequalityplot.py 的完整类报告在:
基本模块包含派生类......经常重复......我将只报告一个:
import sys
import os
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
from matplotlib.axes import Axes
from cycler import cycler
from matplotlib import cm
from collections import OrderedDict
from matplotlib.ticker import AutoMinorLocator
from basequalityplot import BasePlot
#######################################################################
#######################################################################
class Standard(BasePlot):
def __init__(self,**kwargs):
self.parameters = kwargs
if 'box' not in self.parameters.keys():
self.parameters['box'] = '#AAAAAA'
if 'axeslabel' not in self.parameters.keys():
self.parameters['axeslabel'] = '#AAAAAA'
if 'axes.linewidth' not in self.parameters.keys():
self.parameters['axes.linewidth'] = 0.7
if 'xtickcolor' not in self.parameters.keys():
self.parameters['xtickcolor'] ='#AAAAAA'
if 'ytickcolor' not in self.parameters.keys():
self.parameters['ytickcolor'] = 'gray'
if 'gridcolor' not in self.parameters.keys():
self.parameters['gridcolor'] = 'gray' #'#AAAAAA' #'#dddddd'
if 'font' not in self.parameters.keys():
self.parameters['font'] = 'serif'
if 'fontstyle' not in self.parameters.keys():
self.parameters['fontstyle'] = 'italic'
if 'fontsize' not in self.parameters.keys():
self.parameters['fontsize'] = 10.0
if 'legendfontsize' not in self.parameters.keys():
self.parameters['legendfontsize'] =10.0
if 'legendEdgeColor' not in self.parameters.keys():
self.parameters['legendEdgeColor'] = '#AAAAAA' #'#dddddd'
if 'scheme' not in self.parameters.keys():
self.parameters['scheme'] = 'nb'
if 'cycle' not in self.parameters.keys():
self.parameters['cycle'] = self.cycle('0')
if 'axes.linewidth' not in self.parameters.keys():
self.parameters['axes.linewidth'] = 0.7
if 'grid.dashes' not in self.parameters.keys():
self.parameters['grid.dashes'] = (5,5)
if 'grid.linestyle' not in self.parameters.keys():
self.parameters['grid.linestyle'] = '--'
if 'linestyle' not in self.parameters.keys():
self.parameters['linestyle'] = self.linestyles('paper')
if 'cycle' not in self.parameters.keys():
self.parameters['cycle'] = self.cycle('0')
if 'grid.alpha' not in self.parameters.keys():
self.parameters['grid.alpha'] = '1'
if 'grid.linewidth' not in self.parameters.keys():
self.parameters['grid.linewidth'] = 0.7
self.parameters.update(kwargs)
super().__init__(**self.parameters)
好吧......我想包含basequalityplot.py
和qualityplot.py
在同一个目录中(其中 qualityplot 是包含我想要使用的类的模块..在这种情况下我只报告了标准的)
我试图创建一个名为qualityPlot
然后从子目录中的脚本尝试import qualityPlot
通常用于 import packjage .. 但这不起作用.. 有人可以帮助我吗?:(
解决方案
在 Python 中使用模块
- 确保
__init__.py
文件存在于目录中(注意下划线) - 请注意,文件夹名称和文件名都是模块的一部分
- 确保 Python 会找到路径(比如使用 PYTHONPATH)
在你的例子中,
from basequalityplot import BasePlot
这期望在当前目录(或直接在 python 路径上的其他地方,或编译版本)中找到文件 basequalityplot.py。在该文件中,它期望找到类 BasePlot。
我想在同一个目录中包含 basequalityplot.py 和 qualityplot.py (其中 qualityplot 是包含我要使用的类的模块..在这种情况下我只报告了标准的)
我试图创建一个名为 qualityPlot 的文件夹
您在此处描述的内容与您的示例代码不太匹配。如果你有一个文件夹结构
qualityPlot/
__init__.py
basequalityplot.py
qualityplot.py
我希望导入声明能够阅读
from qualityPlot.qualityplot import BasePlot
Python Tutorial 6.4 中有一个有用的例子 https://docs.python.org/3/tutorial/modules.html#packages
推荐阅读
- java - 使用 JGit 获取一系列修订的日志
- python - 在 Jupyter Notebook 中让 Ipywidgets 与 Pandas 数据框交互
- typescript - 检查值是否为 2 或 4
- flutter - 将数据传递给 StatefulWidget 并在 Flutter 中以它的状态访问它
- javascript - Kendo 数据源包含过滤器不起作用
- f# - websharper F# 端点 - 捕获所有页面处理程序和页面重定向
- mongodb - mongodb中每个坐标的返回距离
- scala - Future[Source] pipeTo an Actor
- c# - 获取运行Ubuntu子系统的Windows公共路径
- python - 如何避免函数名称中的参数类型?