如何从另一个类导入变量?

时间:2014-04-25 22:20:01

标签: python python-2.7 python-3.x

我有文件foo.pybar.py

foo.py我有:

class Foo:
    def __init__(self):
        self.myvar = 1

bar.py我有:

class Bar:
    def __init__(self):
        ...

如何将self.myvarFoo转移到班级Bar

2 个答案:

答案 0 :(得分:1)

Foo和Bar是两个独立模块中的两个独立类。没有办法直接"导入"价值。另外,myvar不是在Foo定义中的方法之外设置的,这意味着它只存在于给定的Foo实例中(即,Foo.myvar不存在,尽管Foo()。myvar确实存在)。

实现你想要的东西的一种方法是让Bar成为Foo的孩子,并在Bar的__ init__函数中调用它的构造函数。注意:您还需要将类Foo更改为类Foo(对象),或调整超级调用。

如, bar.py:

from foo import Foo
class Bar(Foo):
    def __init__(self):
        super(Bar, self).__init__()

这可能不合适,具体取决于您的对象要做什么等。在这种情况下,您需要创建一个Bar可以在创建过程中引用的Foo实例(即,在bar.py中创建一个或者将它传递给__ init__方法。

答案 1 :(得分:1)

<强> foo.py

class Foo(object): # new-style classes (which extend from object) are preferred
    def __init__(self):
        self.myvar = 1

<强> bar.py

class Bar(object):
    def __init__(self, foo):
        self.myvar = foo.myvar

<强> main.py

from foo import Foo
from bar import Bar

fooobj = Foo()
barobj = Bar(fooobj)