Python:为__init__设置子类或元类字典

时间:2016-11-25 17:13:52

标签: python dictionary

我是python的新手。我仍然不确定子类化或元类化现有类型的功能优势 - 如果您愿意,可以随意详细说明。

我的问题转到以下类中的函数__init__(self, *args, **kwargs)

class NewDict(<sub / meta class here>):
  def __init__(self, *args, **kwargs):
    #(is this needed) super(NewDict, self).__init__(args, kwargs)

    self.a_specific_key = a_passed_variable

目标是按以下方式致电NewDict

nd = NewDict(a_passed_variable = a_value)

使nd["a_specific_key"]返回a_value

因此,请说明如何定义init函数,以便实现这一目标。

例如:

def Test(dict):
  def __init__(self, **kwargs):
    self.__setitem__("key", kwargs["value"])

t = Test(a=5) 
## causes error
# goal is to be able to then call
t["key"]
--> 5

目标是设置一个字典模板,其中包含一组密钥和与这些密钥相关的特殊方法,即该类的实例很多,并且它们每个都应具有相同的密钥和方法。因此,为什么我要从init函数设置键。

1 个答案:

答案 0 :(得分:-1)

可以通过以下方式实现:

class NewDict(dict):
  _keys = ['my_key_1', 'my_key_2', ... ]
  def __init__(self, **kwargs):
    for key in self._keys:
      if key in kwargs:
        self[key] = kwargs[key]
      else:
        self[key] = None