我想要一个方法接受另一个方法的结果作为参数:
def method2(self, self.method1(arg_for_method_1))
pass
但我一直收到错误
NameError: name 'self' is not defined
为什么呢?
答案 0 :(得分:4)
您正在尝试提供Python期望简单名称的值;该名称将在运行时分配一个值。
由于self
已经是一个参数,您可以在self.method1()
运行时调用method2
:
def method2(self)
x = self.method1()
如果您希望method1
设置参数的默认值,请使用None
作为默认值。
def method2(self, var=None):
if var is None:
var = self.method1()
答案 1 :(得分:3)
class XYZ:
def some_method(self):
return math.PI
def method1(self,x):
return x**0.5
def method2(self, method1):# <- this is the argument ... not the value
print method1()
def method3(self,some_value):
print some_value
x = XYZ()
x.method2(x.some_method)
x.method3(x.method1(5)) #<--- you call the method when you pass it not when you define it