我是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函数设置键。
答案 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