Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何重写此类中的函数?_Python_Pygal - Fatal编程技术网

Python 如何重写此类中的函数?

Python 如何重写此类中的函数?,python,pygal,Python,Pygal,我正在使用pygal库创建图表,并希望覆盖一些函数,例如_tooltip_data函数等。首先,我试图覆盖_title函数(为了创建文本,我意识到我可以做:gauge.title=“Blah title”,但我想覆盖_title函数中的一些其他内容) 我迷路了。为了创建量表图表,我创建了一个量表类,它继承自MyGraph类,继承自pypal的Graph类。如果我尝试创建MyGauge图表,则会出现错误: AttributeError: 'module' object has no attribu

我正在使用pygal库创建图表,并希望覆盖一些函数,例如_tooltip_data函数等。首先,我试图覆盖_title函数(为了创建文本,我意识到我可以做:gauge.title=“Blah title”,但我想覆盖_title函数中的一些其他内容)

我迷路了。为了创建量表图表,我创建了一个量表类,它继承自MyGraph类,继承自pypal的Graph类。如果我尝试创建MyGauge图表,则会出现错误:

AttributeError: 'module' object has no attribute 'MyGauge'
这是我的代码,我确信有很多错误。请记住,我仍然是一个新手(我可能不必告诉您,您可以通过查看我的代码猜到这一点)

我卡住了。我甚至尝试创建一个MyPygal类,它继承自pygal,这样我就可以覆盖图表的名称

class MyPygal(pygal):
    def __init__(self):
        CHARTS_NAMES = [
            'Line',
            'StackedLine',
            'XY',
            'Bar',
            'HorizontalBar',
            'StackedBar',
            'HorizontalStackedBar',
            'Pie',
            'Radar',
            'Funnel',
            'Pyramid',
            'VerticalPyramid',
            'Dot',
            'Gauge',
            'MyGauge' # my new chart type
        ]
我用“MyPygal.MyGauge”调用它,但由此得到错误:

TypeError: Error when calling the metaclass bases
    module.__init__() takes at most 2 arguments (3 given)

我的思路是否正确?

如果您在自己的文件中创建了自己的类,请不要尝试使用
pygal.MyGauge
引用它。使用
pygal.
前缀用于引用
pygal
库中的内容。但是您的
MyGauge
类不是该库的一部分;是你自己创造的。只需使用
MyGauge(…)
实例化您的类


另外,为什么要创建
MyGauge
类?它没有任何作用。为什么不直接实例化
MyGraph

如果您在自己的文件中创建了自己的类,请不要尝试使用
pygal.MyGauge
引用它。使用
pygal.
前缀用于引用
pygal
库中的内容。但是您的
MyGauge
类不是该库的一部分;是你自己创造的。只需使用
MyGauge(…)
实例化您的类


另外,为什么要创建
MyGauge
类?它没有任何作用。为什么不直接实例化
MyGraph

既然pygal的Gauge类继承自他们的Graph类,我认为MyGauge必须继承自MyGraph,以便MyGauge图表将基于MyGraph,不是吗?@Mr.Gaga:问题是你想要
MyGauge
做什么
MyGraph
还没有做。按照您现在的方式,
MyGauge
没有提供自己的功能;它只是
MyGraph
的多余包装。大概在
pygal
中,
Gauge
类向
Graph
类添加了一些内容,这就是为什么有两个类。但是,如果您只需要进行一个类的定制,那么就不需要创建两个类。类的名称没有任何意义;重要的是类中的代码。@Mr.Gaga:我不知道,因为我不熟悉
pygal
,我也不知道你想做什么。如果我的建议修复了错误,那么你应该继续开发你的类,直到它达到你想要的效果为止,不管是什么。@Mr.Gaga:就像我说的,就在你的
pygal.MyGauge(human\u readable=True,pretty\u print=True)
,将它改为
MyGauge(human\u readable=True,pretty\u print=True)
@Mr.Gaga:好的,但无论如何,这是一个进步,因为至少你得到了一个与你如何定义你的类有关的错误。也许是时候就该错误再问一个问题了。
humanu\u可读的
pygal.Graph
已经接受并知道的东西吗?如果没有,则需要在类中定义它。在尝试从现有库扩展类之前,我建议您尝试一些简单的练习,只创建几个相互继承的类,以了解如何在Python中进行类继承。由于pygal的Gauge类继承自其Graph类,我认为MyGauge必须继承MyGraph,以便MyGauge图表将基于MyGraph,不是吗?@Mr.Gaga:问题是你想要什么
MyGauge
来做到这一点
MyGraph
还没有做到。按照您现在的方式,
MyGauge
没有提供自己的功能;它只是
MyGraph
的多余包装。大概在
pygal
中,
Gauge
类向
Graph
类添加了一些内容,这就是为什么有两个类。但是,如果您只需要进行一个类的定制,那么就不需要创建两个类。类的名称没有任何意义;重要的是类中的代码。@Mr.Gaga:我不知道,因为我不熟悉
pygal
,我也不知道你想做什么。如果我的建议修复了错误,那么你应该继续开发你的类,直到它达到你想要的效果为止,不管是什么。@Mr.Gaga:就像我说的,就在你的
pygal.MyGauge(human\u readable=True,pretty\u print=True)
,将它改为
MyGauge(human\u readable=True,pretty\u print=True)
@Mr.Gaga:好的,但无论如何,这是一个进步,因为至少你得到了一个与你如何定义你的类有关的错误。也许是时候就该错误再问一个问题了。
humanu\u可读的
pygal.Graph
已经接受并知道的东西吗?如果没有,则需要在类中定义它。我建议您在尝试从现有库扩展类之前,尝试一些简单的练习,只创建几个相互继承的类,以了解如何在Python中执行类继承。
TypeError: Error when calling the metaclass bases
    module.__init__() takes at most 2 arguments (3 given)