从另一个 class 更改 class 参数
Changing class argument from a different class
我正在使用已经编写好的代码,这些代码被分成多个模块,具有不同的 classes。我必须从不同的模块连接两个 classes。
代码很长,所以我会尝试用一个简单的例子来解释我的问题。假设我有一个 mod1.py
和 Class1
class Class1(object):
def __init__(self, name='Tim'):
self.name = name
和mod2.py
与Class2
class Class2(object):
def __init__(self, ...):
...
my_name = 'Jack'
new_class = Class1(name=my_name)
...
my_name = 'Nic'
所以我的问题是,当 Class2
中的 my_name
发生变化时,我能否以某种方式改变 Class1
中的 self.name
。我不想用新的 my_name
创建一个新的 class,但实际上是在 new_class
中更改它。
我希望我的例子和问题有意义。
Class1
对变量 my_name
一无所知;它只知道它接收到一个 值 'Jack'
,而不是该值的来源。
传递要存储在 Class2
实例中的 Class1
实例。然后 Class1
实例的任何修改都将在 Class2
.
中可见
class Class2:
def __init__(self, c):
self.c = c
c1 = Class1("Jack")
c2 = Class2(c1)
c1.name = "Nic"
assert c2.c.name == "Nic"
我正在使用已经编写好的代码,这些代码被分成多个模块,具有不同的 classes。我必须从不同的模块连接两个 classes。
代码很长,所以我会尝试用一个简单的例子来解释我的问题。假设我有一个 mod1.py
和 Class1
class Class1(object):
def __init__(self, name='Tim'):
self.name = name
和mod2.py
与Class2
class Class2(object):
def __init__(self, ...):
...
my_name = 'Jack'
new_class = Class1(name=my_name)
...
my_name = 'Nic'
所以我的问题是,当 Class2
中的 my_name
发生变化时,我能否以某种方式改变 Class1
中的 self.name
。我不想用新的 my_name
创建一个新的 class,但实际上是在 new_class
中更改它。
我希望我的例子和问题有意义。
Class1
对变量 my_name
一无所知;它只知道它接收到一个 值 'Jack'
,而不是该值的来源。
传递要存储在 Class2
实例中的 Class1
实例。然后 Class1
实例的任何修改都将在 Class2
.
class Class2:
def __init__(self, c):
self.c = c
c1 = Class1("Jack")
c2 = Class2(c1)
c1.name = "Nic"
assert c2.c.name == "Nic"