2015-03-30 4 views
1

Я ищу подкласс XY-графика в Pygal, так как я хочу попробовать переопределить некоторые из методов Graph, такие как _x_axis и _y_axis.Как подклассы диаграмм Пигала

import pygal 
from pygal.style import Style, CleanStyle 

class CustomXY(pygal.XY): 
    def __init__(self, *args, **kwargs): 
     super(CustomXY, self).__init__(*args, **kwargs) 
    def _x_axis(self): 
     pass 
    def _y_axis(self): 
     pass 

scatter = CustomXY(stroke=False, show_y_guides=False, truncate_legend=20) 

Когда я пытаюсь запустить этот код, я получаю эту ошибку:

Traceback (most recent call last): 
    File "pygal_test2.py", line 12, in <module> 
    scatter = CustomXY(stroke=False, show_y_guides=False, truncate_legend=20) 
    File "pygal_test2.py", line 6, in __init__ 
    super(CustomXY, self).__init__(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/pygal/ghost.py", line 71, in __init__ 
    self.cls = REAL_CHARTS[name] 
KeyError: 'CustomXY' 

Замену CustomXY(pygal.XY) с CustomXY(pygal.graph.xy.XY) дает мне эту ошибку:

Traceback (most recent call last): 
    File "pygal_test2.py", line 12, in <module> 
    scatter = CustomXY(stroke=False, show_y_guides=False, truncate_legend=20) 
    File "pygal_test2.py", line 6, in __init__ 
    super(CustomXY, self).__init__(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/pygal/graph/line.py", line 33, in __init__ 
    super(Line, self).__init__(*args, **kwargs) 
TypeError: __init__() got an unexpected keyword argument 'stroke' 

Что является предпочтительным способом подкласса Pygal графики?

ответ

0

Это проект с открытым исходным кодом, есть ли конкретная причина, по которой вы не хотите вносить изменения в свою собственную версию XY?

http://pygal.org/

Мы все видим видеть, что баннер в правом верхнем углу ... правильно?

Со всей серьезности я немного скинули класс Ghost бросания этой ошибки в инициализации учитывая, что привидение не в объектной иерархии для нового класса.

pygal выглядит как классный пакет, и меня интересует то, что здесь говорят другие люди.

+0

Если вы хотите подкласс, вы создаете подкласс. Если вы хотите изменить базовый класс, ** затем ** вы используете fork и меняете базовый класс. Существует два разных варианта использования. –

+0

@kpie Это действительно комментарий, а не ответ. Конечно, я его разворачиваю, но тогда я использую fork + мое приложение вместо моего приложения. – ChrisGuest