用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
。