我是python的新手,也是编程新手。我有问题如何在方法中也使用方法1中的变量。
实施例
class abc(self):
def method1 (self,v1):
v1 = a+b
return v1 # want to use this value in method 2
def method2(self)
v2 * v1 = v3
由于
答案 0 :(得分:1)
让method2
"知道"它在等待争论:
def method2(self,v1): #note v1 was added here
v2 * v1 = v3 #what does that suppse to do? [look my "third note"]
另请注意:您还需要将v2
传递给method2()
第三点:你究竟想在v2 * v1 = v3
做什么?也许你的意思是v3 = v1 * v2
?
答案 1 :(得分:1)
使用v1
使self
成为实例变量,即self.v1 = a+b
和v2 * self.v1 = v3
。但是第二个命令应该如下所示:v3 = v2 * self.v1
。 v2
未定义的问题仍然存在。
请注意,使用此方法时,必须在method1
之前调用method2
,否则在处理method2期间将不会定义self.v1
(必须如此)。 amit的方法更清晰。
学习python好运。这是一门很棒的语言。
答案 2 :(得分:0)
要在整个类中使用值,您需要将该值绑定到其实例的属性。
例如:
class Abc(object): # put object here, not self
def method1(self):
self.v1 = 3 + 7 # now v1 is an attribute
def method2(self)
return 4 * self.v1
a = Abc()
a.method1()
a.v1 # -> 10
a.method2() # -> 40
但是在调用某个方法后,通常不是一个好的做法,所以你也应该为v1提供一个默认值。将其放在__init__
:
class Abc(object):
def __init__(self):
self.v1 = 0
def method1(self):
self.v1 = 3 + 7
def method2(self)
return 4 * self.v1
a = Abc()
a.v1 # -> 0
a.method1()
a.v1 # -> 10
a.method2() # -> 40
答案 3 :(得分:0)
另一种方法是使用全局变量。
def a():
global v
v = 10;
def b():
print v
if __name__=='__main__':
a()
b()