声明时类内的Python字段间引用
我正在尝试基于同一类中的现有词典创建一个新词典。是否可以在另一个字段成员的声明中引用一个字段成员?第一次演讲需要特别的装饰吗声明时类内的Python字段间引用,python,class,Python,Class,我正在尝试基于同一类中的现有词典创建一个新词典。是否可以在另一个字段成员的声明中引用一个字段成员?第一次演讲需要特别的装饰吗 class Foo: dict1 = {"a": 1, "b": 2, "c": 3} dict2 = {i: Foo.dict1[i] * 10 for i in Foo.dict1} print(Foo.dict2) 您不能直接这样做,因为在计算dict2时未定义Foo。不过,解决这个问题很容易: class Foo: dict1 =
class Foo:
dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {i: Foo.dict1[i] * 10 for i in Foo.dict1}
print(Foo.dict2)
您不能直接这样做,因为在计算
dict2
时未定义Foo
。不过,解决这个问题很容易:
class Foo:
dict1 = {"a": 1, "b": 2, "c": 3}
_dict2 = None
@staticmethod
def dict2():
if Foo._dict2 is None:
Foo._dict2 = {i: Foo.dict1[i] * 10 for i in Foo.dict1}
return Foo._dict2
print(Foo.dict2())
# {'a': 10, 'b': 20, 'c': 30}
一个简单的解决方案是在类的定义之后添加第二个静态成员:
class Foo:
dict1 = {"a": 1, "b": 2, "c": 3}
Foo.dict2 = {i: Foo.dict1[i] * 10 for i in Foo.dict1}
print(Foo.dict2)
我想出了一个更简单的解决办法。诀窍是使用.items(),它返回可以在新dict中引用的键、值元组
class Foo:
dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {itm[0]: itm[1] * 10 for itm in dict1.items()}
>>>Foo.dict2
{'a': 10, 'b': 20, 'c': 30}
可能重复的