如何在类实例之间传递变量或获取调用者?
class foo():
def __init__(self)
self.var1 = 1
class bar():
def __init__(self):
print "foo var1"
f = foo()
b = bar()
在foo这个地方,我做了一些事情,让"var1"的值变成了1。在bar这个地方,我想要访问var1的内容。
我该如何在bar的实例b中访问foo的实例f里的var1呢?
简单来说,这两个类是不同的wxframe窗口。例如,在一个窗口里,用户可能在输入数据,而在第二个窗口里,它会用这些输入的数据来生成输出。在C++中,我会有一个指向调用者的指针,但我不知道在Python中该如何访问调用者。
6 个回答
7
和任何语言一样。
class Foo(object):
def __init__(self):
self.x = 42
class Bar(object):
def __init__(self, foo):
print foo.x
a = Foo()
b = Bar(a)
10
没有人提供过一个代码示例,说明如何在不改变初始化参数的情况下做到这一点。你可以简单地在外部作用域使用一个变量来定义这两个类。不过,如果一个类是在与另一个类不同的源文件中定义的,这种方法就不行了。
var1 = None
class foo():
def __init__(self)
self.var1 = var1 = 1
class bar():
def __init__(self):
print var1
f = foo()
b = bar()
22
在wxPython中,如果你想让不同的页面能够访问和编辑相同的信息,可以考虑在你的主框架(MainFrame,或者你给它起的其他名字)中创建一个信息类的实例,然后把这个实例传递给它创建的其他页面。举个例子:
class info():
def __init__(self):
self.info1 = 1
self.info2 = 'time'
print 'initialised'
class MainFrame():
def __init__(self):
a=info()
print a.info1
b=page1(a)
c=page2(a)
print a.info1
class page1():
def __init__(self, information):
self.info=information
self.info.info1=3
class page2():
def __init__(self, information):
self.info=information
print self.info.info1
t=MainFrame()
输出结果是:
initialised
1
3
3
信息只初始化了一次,这说明只有一个实例存在,但页面1把info1这个变量改成了3,而页面2也注意到了这个变化。