Python:如何在类实例之间传递变量或获取调用者?

lme*_*lme 10 python variables instance

class foo():
  def __init__(self)
    self.var1 = 1

class bar():
  def __init__(self):
    print "foo var1"

f = foo()
b = bar()
Run Code Online (Sandbox Code Playgroud)

在foo中,我正在做一些产生"var1"设置为1的内容在bar中,我想访问var1的内容

如何从bar的实例b中访问foo的类实例f中的var1

基本上这些类是不同的wxframes.因此,例如在一个窗口中用户可能正在输入输入数据,在第二窗口中,它使用该输入数据来产生输出.在C++中,我会有一个指向调用者的指针,但我不知道如何在python中访问调用者.

小智 16

作为wxPython中不同页面访问和编辑相同信息的一般方法,请考虑在MainFrame(或任何您称之为)类中创建info类的实例,然后将该实例传递到它创建的任何其他页面上.例如:

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()
Run Code Online (Sandbox Code Playgroud)

输出是:

initialised
1
3
3
Run Code Online (Sandbox Code Playgroud)

info仅在证明只有一个实例但是page1已将info1变量更改为3并且page2已注册该更改时才初始化.


小智 7

没有人提供代码示例,显示了在不更改init参数的情况下执行此操作的方法.您可以简单地在外部作用域中使用一个定义两个类的变量.如果在另一个源文件中定义了一个类,则无法使用此方法.

var1 = None
class foo():
  def __init__(self)
    self.var1 = var1 = 1

class bar():
  def __init__(self):
    print var1

f = foo()
b = bar()
Run Code Online (Sandbox Code Playgroud)


Cat*_*lus 5

与任何语言相同.

class Foo(object):
    def __init__(self):
        self.x = 42

class Bar(object):
    def __init__(self, foo):
        print foo.x

a = Foo()
b = Bar(a)
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法在不改变 __init__ 参数的情况下做到这一点? (2认同)