Python Pygal Chart Library - Разочарование не может даже определить функцию

Питон Иисуса Христа - самый загадочный **, с которым я когда-либо имел дело.

По какой-то причине я не могу даже добавить функции в этот класс (включенный в проект, а не часть библиотеки). Pygal использует какой-то класс класса "Ghost", чтобы закончить меня.

Рассмотрим следующий класс Line, экземпляр которого можно создать только с помощью черной магии, IE: pygal.Line(Config)

class Line(Graph):
    """Line graph"""

    strum_count_dict = {}

    def __init__(self, *args, **kwargs):
        self._self_close = False
        super(Line, self).__init__(*args, **kwargs)

Кажется прямо?

Вот некоторые из класса Glost.

REAL_CHARTS = {}
for NAME in CHARTS_NAMES:
    mod_name = 'pygal.graph.%s' % NAME.lower()
    __import__(mod_name)
    mod = sys.modules[mod_name]
    REAL_CHARTS[NAME] = getattr(mod, NAME)


class Ghost(object):

    def __init__(self, config=None, **kwargs):
        """Init config"""
        name = self.__class__.__name__
        self.cls = REAL_CHARTS[name]
        self.uuid = str(uuid4())
        if config and isinstance(config, type):
            config = config()

        if config:
            config = config.copy()
        else:
            config = Config()

        config(**kwargs)
        self.config = config
        self.raw_series = []
        self.raw_series2 = []

И инициация пигала

    __version__ = '1.1.0'
import sys
from pygal.config import Config
from pygal.ghost import Ghost
from pygal.graph import CHARTS_NAMES

CHARTS = []
CHARTS_BY_NAME = {}

for NAME in CHARTS_NAMES:
    _CHART = type(NAME, (Ghost,), {})
    CHARTS.append(_CHART)
    CHARTS_BY_NAME[NAME] = _CHART
    setattr(sys.modules[__name__], NAME, _CHART)


__all__ = CHARTS_NAMES + [Config.__name__, 'CHARTS', 'CHARTS_BY_NAME']  # @UndefinedVariable

Добавление функции в файл Line.py показывает:

AttributeError: у объекта 'Line' нет атрибута 'set_extra_data'

Даже когда это просто определено как обычно:

def set_extra_data(self):
    print "--> FML Python"

Кто-нибудь имеет представление о том, что здесь происходит?

0 ответов

Другие вопросы по тегам