我知道这个论点是琐碎的,在很多文章中都有论述,但我读过,我仍然不清楚如何将文件夹中的内容视为包。。。
以这个例子为例(我知道有*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
,就像导入packjage一样。。但这行不通。。。。
有人能帮我吗
您需要在目录中创建一个(可能是空的)
__init__.py
请注意,在Python中,没有要求或期望每个类都在自己的文件中,因此如果您只想在同一个文件中创建子类就可以了
另外请注意,参数的更好模式是定义一个默认字典,然后用kwargs中的任何内容更新它:
您需要通过告诉
import
在何处查找来“帮助”它:应该有用。我用它来写放在不同地方的不同程序,但调用同一个公共库(主要是数学和图表方面的个人资料)
在Python中使用模块
__init__.py
文件(注意下划线)在你的例子中
from basequalityplot import BasePlot
这需要在当前目录(或者直接在python路径上的其他地方,或者编译版本)中找到一个文件basequalityplot.py。在该文件中,它希望找到类BasePlot
您在这里描述的内容与示例代码不太匹配。如果你有一个文件夹结构
我希望import语句
在Python教程6.4中有一个有用的例子 https://docs.python.org/3/tutorial/modules.html#packages
相关问题 更多 >
编程相关推荐