我试图调用函数中定义的变量,在同一个类的另一个函数内,但使用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说:Project instance has no attribute 'a'
。
我不太清楚如何使用类。我没有使用__init__
因为我没有任何东西可以放,即使我不正式需要它也许有办法添加它?
谢谢你的帮助。
你的a
和b
变量是本地的。您只能在方法范围中使用这些变量。如果你想要一个类属性(与所有类共享),你必须设置像self.a = ...
和self.b = ...
。在python中没有必要创建构造函数方法__init__
既不初始化这些属性。但是在你的例子中,如果你在functions2
之前调用function1
它会崩溃,因为你使用的是一个不存在的属性。然后建议初始化属性。您可以像这样初始化属性:
class Project:
a = ''
b = ''
def function1(self):
self.a='hello world,'
def function2(self):
self.b=self.a + ' I am alive'
要记住的更多事情:
变量是小写和蛇案例:project1 = Project()
2.您的打印件不会打印任何内容,因为您的功能不会返回任何内容。你必须返回类似的东西:
def function1():
return 'hello world,'
或者如果你需要设置和打印:
def function1():
self.a = 'hello world,'
return self.a
你需要的是:
def function1(self):
self.a = 'hello world, '
在function1
中,a
是有人说的局部变量,而self.a
是附加到当前对象的属性。
在function1(self)
你需要将a=
改为self.a=
。在原始代码中,您创建了一个局部变量a
,您需要显式使用self
将变量a
附加到对象的实例并在函数调用之间保持持久性。