Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python调用同一类中的变量_Python_Class_Variables - Fatal编程技术网

用python调用同一类中的变量

用python调用同一类中的变量,python,class,variables,Python,Class,Variables,我试图在同一类的另一个函数中调用函数中定义的变量,但是使用self不起作用 class Project(): def function1(self): a='hello world,' def function2(self): b=self.a + ' I am alive' Project1=Project() print Project1.function1() print Project1.function2() python说:项目实

我试图在同一类的另一个函数中调用函数中定义的变量,但是使用
self
不起作用

class Project():
    def function1(self):
        a='hello world,'

    def function2(self):
        b=self.a + ' I am alive'

Project1=Project()
print Project1.function1()
print Project1.function2()
python说:
项目实例没有属性“a”

我不太清楚如何使用类。我没有使用
\uuuuu init\uuuuuuu
,因为我没有任何东西要放,即使我不需要它,是否有办法添加它

谢谢您的帮助。

您需要的是:

    def function1(self):
      self.a = 'hello world, '

function1
中,
a
是一个局部变量,而
self.a
是附加到当前对象的属性。

function1(self)
中,您需要将
a=
更改为
self.a=
。在原始代码中,您正在创建一个局部变量
a
,您需要显式地使用
self
将变量
a
附加到对象的实例,并在函数调用期间保持持久性。

您的
a
b
变量是局部变量。您只能在方法范围内使用这些变量。如果您想要一个类属性(与所有类共享),您必须设置类似的
self.a=…
self.b=…
。 在python中,不需要创建构造函数方法
\uuuu init\uuu
,也不需要初始化这些属性。 但在您的示例中,如果在
function1
之前调用
functions2
,它将崩溃,因为您使用的是一个不存在的属性。然后建议初始化属性。 您可以像这样初始化属性:

class Project:
    a = ''
    b = ''

    def function1(self):
        self.a='hello world,'

    def function2(self):
        self.b=self.a + ' I am alive'
更多需要记住的事情:
1.变量是小写和蛇形的:
project1=Project()

2.您的打印不会打印任何内容,因为您的函数不会返回任何内容。您必须返回以下内容:

def function1():
    return 'hello world,'
或者,如果需要设置并打印:

def function1():
    self.a = 'hello world,'
    return self.a

function1
中,
a
是本地的。您可能想要
self.a='hello world',
因此,如果我想要打印function2,我应该在function1中将a定义为self.a?是的。在现有代码中,
self.a
(对象
self
的属性
a
)从未定义<
函数1
中的code>a是局部变量。看,谢谢大家;)现在,它终于可以工作了,我需要使用init吗,或者在类中不是强制的?它的工作方式是这样的。如果要在创建(实例化)对象后立即设置
self.a
,则只需
\uuuuu init\uuuu