Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用_new__创建一个字典,并为每个键添加一个属性_Python - Fatal编程技术网

Python使用_new__创建一个字典,并为每个键添加一个属性

Python使用_new__创建一个字典,并为每个键添加一个属性,python,Python,我正在构建一个python类,在这个类中,我使用方法“new”创建了一个词汇表。然后,我想定义一个方法来影响一些键的单位。下面是代码示例: class MyClass(object): def __new__(cls): dict = {key1:None, key2:None} return dict def unit(self, unit): self[KEY].unit = unit 其中,在单元法中,键应取字典中的任何键。你能帮我理解怎么编码吗 提前谢

我正在构建一个python类,在这个类中,我使用方法“new”创建了一个词汇表。然后,我想定义一个方法来影响一些键的单位。下面是代码示例:

class MyClass(object):
  def __new__(cls):
    dict = {key1:None, key2:None}
    return dict

  def unit(self, unit):
    self[KEY].unit = unit
其中,在单元法中,键应取字典中的任何键。你能帮我理解怎么编码吗


提前谢谢,

我不确定您为什么要使用
\uuuuu new\uuuu
而不是
\uuuu init\uuuu
,但您可以通过执行以下操作简单地遍历字典中的所有键:

class dictionary_setter:
  some_dic = {'key1':1, 'some_other_key':2, 'just another key':3}

def __init__(self,keys):
  self.some_dic = {}
  for k in keys:
    self.some_dic[k]='some_value'

a_test_dic = dictionary_setter(['key1','key2'])
print(a_test_dic.some_dick['key1'])

将字符串转换为变量是另一个主题,但您可以通过点语法简单地引用字典条目。

您很可能希望使用init函数。您试图解决的问题到底是什么?不要使用
\uuuu new\uu
方法。这几乎总是一个错误,在你的例子中肯定是这样。您应该是子类化
dict
。还不清楚magic
KEY
var的定义位置或定义方式。我建议您根据您的目标重新表述您的问题,而不是使用
\uuuu new\uuuu()
方法让示例工作。我无法返回带有init的词典。我想做一些类似的事情:`from MyClass import*dict=MyClass()dict[“key1”].unit=“m/s”`您不必这样做。你只要查字典就行了。你是从C/Java过渡到python的吗?从fortran到pythonI更新了示例,展示了如何将字典附加到类的实例中。我同意这一点,但我仍然不能仅使用键将attirbute单元影响到“some_dic”。Cf.def unit(self,unit):self.some_dic[key]。unit=unit