为产品子批次创建类

2024-09-23 06:23:26 发布

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

我想知道如何设计一个好的类来生成一个适合我的matplotlib图。 我首先要得到的是一个可调用的类,如下所示,
但我不知道如何设计这样一个班级。你知道吗

我想这样使用它:

fig,axs = MyClass(parameter...) 

我怎样才能正确使用这个?你知道吗

编辑非常感谢@importanceofbeinger如果您给了我一个很好的起点,我现在的问题是既然您向我展示了如何将**参数传递给类,那么您对如何传递变量列表以便绘制在ax1,ax2,ax3,ax4中有何看法?再次感谢你的帮助总是非常宝贵的


Tags: 编辑列表parametermatplotlibmyclassfig绘制起点
2条回答

本质上,你不能,或者至少不应该。类的返回应该是它自己的一个实例。你知道吗

不管你怎么称呼一个班级,例如

import matplotlib.pyplot as plt

class MyClass():
    def __init__(self, **parameters):
        self.fig, self.axs = plt.subplots(**parameters)

    def __call__(self):
        return self.fig, self.axs

fig, axs = MyClass(figsize=(6,5))()

这样做的缺点是,可以直接为创建的类实例释放任何处理程序。这意味着将上述内容写成函数要简单得多

import matplotlib.pyplot as plt

def myfunction(**parameters):
    fig, axs = plt.subplots(**parameters)
    return fig, axs

fig, axs = myfunction(figsize=(6,5))

因此,为了使类的使用有意义,人们可能希望以某种方式存储它,然后使用它的属性或方法。你知道吗

import matplotlib.pyplot as plt

class MyClass():
    def __init__(self, **parameters):
        self.fig, self.axs = plt.subplots(**parameters)

myclass = MyClass(figsize=(6,5))
fig = myclass.fig
axs = myclass.axs

除了另一个答案之外,还可以创建一个实现__iter__函数的类,该函数将类模拟为元组,允许它返回fig, axs

class MyClass:
    def __init__(self, params):
        self.fig, self.axs = plt.subplots()
        # Do stuff here
    def __iter__(self):
        for e in (self.fig, self.axs):
            yield e

fig, axs = MyClass(params)

然而,正如@ImportanceOfBeingErnest所描述的,这是相当不正常的。你知道吗

相关问题 更多 >