Returning void (or Nothing in VB.NET) from a method is best the way to say, "I don't care about you, caller." Consider this silly C# code:
var engine = Python.CreateEngine();
var scope = engine.CreateScope();
scope.SetVariable( "PIRoot", Math.Sqrt( Math.PI ) );
var result = engine.Execute<double>( "PIRoot ** 2", scope );
Console.WriteLine( result );
This code could be a lot more fluid but the ScriptScope.SetVariable method returns void. If the method returned a reference to its Engine property, the code could have been written more succinctly as:
Console.WriteLine( Python
.CreateEngine()
.CreateScope()
.SetVariable( "PIRoot", Math.Sqrt( Math.PI ) )
.Execute<double>( "PIRoot ** 2", scope ) );
Wouldn't that be nice? So don't return void (or Nothing in VB.NET). When you have nothing else you can return from an instance method, return the this pointer (or Me in VB.NET).