在类inheritan中将值附加到dict

2024-03-29 05:23:42 发布

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

我正在编写一个函数,它返回一个包含一个键和多个值的字典。我想使我的函数尽可能的通用,允许我添加尽可能多的值到一个现有的键。 下面是我写的代码:

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向现有键附加新值。你知道吗


Tags: 函数nameselfdatareturndefdriverjob
1条回答
网友
1楼 · 发布于 2024-03-29 05:23:42

I want to find a clever way to make the Child class inherited method spark_driver_extra_javaOptions append new values to the existing key.

不要太喜欢抽象类或其他python魔术,只需调用伪代码中所示的父方法

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

相关问题 更多 >