在 class 继承中将值附加到字典
Append values to dict in class inheritance
我正在编写一个 returns 具有一个键和多个值的字典的函数。我想让我的函数尽可能通用,允许我向一个现有键添加尽可能多的值。
下面是我写的代码:
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
class 继承方法 spark_driver_extra_javaOptions
将新值附加到现有键。
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
我正在编写一个 returns 具有一个键和多个值的字典的函数。我想让我的函数尽可能通用,允许我向一个现有键添加尽可能多的值。 下面是我写的代码:
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
class 继承方法 spark_driver_extra_javaOptions
将新值附加到现有键。
I want to find a clever way to make the
Child
class inherited methodspark_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