修改实例的类属性

时间:2018-03-30 05:14:10

标签: python python-3.x

我有以下代码:

Class X(Parent):
   ...
Class Y(Parent):
   ...
Class Z(Parent):
  ...

X._dict = {'a':1, 'b':2, 'c':3}
Y._dict = {'e':4, 'f':5, 'g':6}
Z._dict = {'k':7, 'l':8, 'm':9}

def add_to_dict(obj, k, v):
   obj._dict [k] = v

我想调用add_to_dict(),传递一个X,Y或Z类型的对象。add_to_dict()然后应该将k,v键值对添加到类的_dict(不是实例的)

上一行:

obj._dict [k] = v

将键值对添加到对象的_dict属性中。我需要修复它,以便将键值对添加到类_dict属性中。我该怎么做?

注意:我无权访问Parent类。

1 个答案:

答案 0 :(得分:4)

使用type()访问实例的类,如:

代码:

def add_to_dict(obj, k, v):
    type(obj)._dict[k] = v

测试代码:

class X(object):
    pass

X._dict = {'a': 1, 'b': 2, 'c': 3}

a = X()
b = X()

add_to_dict(a, 'z', 20)
print(a._dict)
print(b._dict)
print(X._dict)

结果:

{'a': 1, 'b': 2, 'c': 3, 'z': 20}
{'a': 1, 'b': 2, 'c': 3, 'z': 20}
{'a': 1, 'b': 2, 'c': 3, 'z': 20}