我有文件foo.py
和bar.py
:
在foo.py
我有:
class Foo:
def __init__(self):
self.myvar = 1
在bar.py
我有:
class Bar:
def __init__(self):
...
如何将self.myvar
从Foo
转移到班级Bar
?
答案 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)