python:在类和外部构造函数之间传递值

python:在类和外部构造函数之间传递值,python,class,Python,Class,我试图将值从一个类传递到另一个类,因此我在第一个和第二个类的构造函数之间传递值很好。但是,每当我试图从类构造函数中访问一些值时,它看起来并不是由该方法获取该变量 下面是名为file1.py的文件,其中包含类Foo: from file2 import * class Bar(): def __init__(self, foo): self.var = foo.h print("+++++++++++++++++++++++++") prin

我试图将值从一个类传递到另一个类,因此我在第一个和第二个类的构造函数之间传递值很好。但是,每当我试图从类构造函数中访问一些值时,它看起来并不是由该方法获取该变量

下面是名为file1.py的文件,其中包含类Foo:

from file2 import *
class Bar():
    def __init__(self, foo):
        self.var = foo.h
        print("+++++++++++++++++++++++++")
        print(self.var)
    def function():
        print" the values is : ",self.var
    function()
b = Bar(Foo())
下面是我的file2.py代码:

class Foo():
    def __init__(self):
        self.x = 6
        self.y = 2
        self.h = self.x+self.y
我的问题是,每当我试图在function()中获取值时,我都会陷入这一部分。错误输出:

print" the values is : ",self.var
NameError: global name 'self' is not defined

你有两个问题。首先,
function
是一个实例方法,因此它需要一个
self
参数。其次,您正在调用
function()
,作为类定义的一部分,我不知道为什么。我认为它应该是一个成员方法,应该在创建实例后调用它

from file2 import *
class Bar():
    def __init__(self, foo):
        self.var = foo.h
        print("+++++++++++++++++++++++++")
        print(self.var)
    def function(self):
        print " the values is : ",self.var

b = Bar(Foo())
b.function()

函数
def
需要缩进,否则它不是类定义的一部分。@Jens-我认为这是一个复制粘贴错误,因为代码根本不会这样编译。@TigerhawkT3:我不知道
def函数()
,因为
\uuuuu init\uuuuu
我同意。大多数代码都需要缩进。只需粘贴代码,高亮显示,然后按Ctrl-k。不要缩进一些行来将它们放在一个块中,而是将其余的放在原处。突出显示并按Ctrl-k将为您完成所有工作。函数
Function
将错过
self
参数:
def Function(self):
。此外,为什么在类初始化期间调用
function
?实际上我知道我必须使用self和function,但我只在代码的底部键入了这两行b=Bar(Foo())function(),我忘了提到b.function(),谢谢!!!