将属性添加到 Python 中现有 Class 的实例 2
Add attribute to an Instance of an existing Class in Python 2
在我的数据中,我在两个不同的部分得到了两个词典。我创建了一个 Class 对象来将字典组合成一个对象。
在此示例中,x
和 y
属性是分别分配给 D_A_x
和 D_A_y
的 Class 词典。
如何向已创建的 class 实例添加属性?
class Class_Example:
def __init__(self,x="NaN",y="NaN"):
self.x = x; self.y = y
def get_x(self,var): return(self.x[var])
def get_y(self,var): return(self.y[var])
D_A = {}
D_A_x = {"a":1}
D_A["instance_1"] = Class_Example(x = D_A_x)
#D_A["instance_1"].get_x("a")
D_A_y = {"b":2}
D_A["instance_1"].__init__(y = D_A_y)
print D_A["instance_1"].get_x("a") #Doesn't work because it has been replaced.
我无法同时访问 D_A_x
和 D_A_y
一次性创建 Class。
我检查了这个,但它对我的情况没有帮助:Adding base class to existing object in python
为什么不简单地做:D_A['instance_1'].y = D_A_y
?
是的,正如您已经注意到的,当您为 Class_Example
class 调用 __init__()
时,它会覆盖 x
和 y
值使用传入的值,第二次,由于您没有为 x
发送任何内容,它使用默认的 "NaN"
字符串 .
你不应该再次调用__init__()
,你可以简单地设置y
属性。示例 -
D_A["instance_1"].y = D_A_y
在我的数据中,我在两个不同的部分得到了两个词典。我创建了一个 Class 对象来将字典组合成一个对象。
在此示例中,x
和 y
属性是分别分配给 D_A_x
和 D_A_y
的 Class 词典。
如何向已创建的 class 实例添加属性?
class Class_Example:
def __init__(self,x="NaN",y="NaN"):
self.x = x; self.y = y
def get_x(self,var): return(self.x[var])
def get_y(self,var): return(self.y[var])
D_A = {}
D_A_x = {"a":1}
D_A["instance_1"] = Class_Example(x = D_A_x)
#D_A["instance_1"].get_x("a")
D_A_y = {"b":2}
D_A["instance_1"].__init__(y = D_A_y)
print D_A["instance_1"].get_x("a") #Doesn't work because it has been replaced.
我无法同时访问 D_A_x
和 D_A_y
一次性创建 Class。
我检查了这个,但它对我的情况没有帮助:Adding base class to existing object in python
为什么不简单地做:D_A['instance_1'].y = D_A_y
?
是的,正如您已经注意到的,当您为 Class_Example
class 调用 __init__()
时,它会覆盖 x
和 y
值使用传入的值,第二次,由于您没有为 x
发送任何内容,它使用默认的 "NaN"
字符串 .
你不应该再次调用__init__()
,你可以简单地设置y
属性。示例 -
D_A["instance_1"].y = D_A_y