Добавьте значения к dict в наследовании классов - PullRequest
0 голосов
/ 11 февраля 2019

Я пишу функцию, которая возвращает словарь с одним ключом и несколькими значениями.Я хочу сделать мою функцию как можно более общей, позволяя мне добавлять столько значений, сколько я хочу, к одному существующему ключу.Ниже приведен код, который я написал:

import abc


class Properties(object):
    __metaclass__ = abc.ABCMeta

    @abc.abstractmethod
    def spark_driver_extra_javaOptions(self, job_name, data, *args, **kwargs):
        return
        {
            'spark.driver.extraJavaOptions': '-DAppConfig.appName=%s   -DAppConfig.domain=%s   -D%s.Options.jobName=%s    -DTrm.Metadata.outputBase=%s' % (
                job_name, data, job_name, data)}


    class Childd(Properties):
        def spark_driver_extra_javaOptions(self,job_name, data, prefix, dataset ):
            return {
                'spark.driver.extraJavaOptions': '-DAppConfig.app

Это не работает должным образом

Я хочу найти умный способ заставить унаследованный от Child метод spark_driver_extra_javaOptions добавлять новые значения ксуществующий ключ.

1 Ответ

0 голосов
/ 11 февраля 2019

Я хочу найти умный способ заставить унаследованный от класса Child метод spark_driver_extra_javaOptions добавлять новые значения к существующему ключу.

Не слишком увлекаться абстрактными классами илидругая магия питона, просто вызовите родительский метод, как показано в псевдокоде

class Properties(object):

    def spark_driver_extra_javaOptions(*args, **kwargs):
        .... # Do stuff
        return {'spark.driver.extraJavaOptions': [...]}

class Child(Properties):
    def spark_driver_extra_javaOptions(*args, **kwargs):
        some_stuff = super().spark_driver_extra_javaOptions(*args, **kwargs) # call parent method
        .... # do more stuff
        more_stuff = [1, 2, 3, ... some more stuff]
        some_stuff['spark.driver.extraJavaOptions'].extend(more_stuff)
        return some_stuff
...