0
我有一個接口和一個抽象基類在C#4.0:使用與IronPython的抽象基類屬性未如預期
public interface IScript
{
ScriptResources Resources { get; set; }
string MessageLog { get; }
void Init();
ScriptResult Execute();
void Cleanup();
}
public abstract class Script : IScript
{
public ScriptResources Resources { get; set; }
public string MessageLog { get; protected set; }
public abstract void Init();
public ScriptResult Execute()
{
try
{
Init();
ScriptResult = RunScript();
}
finally
{
Cleanup();
}
return ScriptResult;
}
protected abstract ScriptResult RunScript();
public abstract void Cleanup();
}
在IronPython的一面,我有以下類從C#腳本類繼承:
import clr
clr.AddReference("MyCSharpLibrary.dll")
from MyCSharpLibrary import *
class IronPythonScript(Script):
def __new__(self):
return Script.__new__(self)
def __init__(self):
return Script.__init__(self)
def Init(self):
Script.LogMessage(self, "< IronPython: Init() >")
Script.LogMessage(self, "")
# Do stuff
def RunScript(self):
Script.LogMessage(self, "< IronPython: RunScript() >")
# Do stuff
def Cleanup(self):
Script.LogMessage(self, "< IronPython: Cleanup() >")
# Do stuff
然而,爲了使用基類的腳本屬性(MessageLog,資源)的IronPython的我不得不使用下面的相當醜陋的語法,這似乎我錯了:
Script.MessageLog.__set__(self, "TEST VALUE")
print Script.MessageLog.__get__(self)
我在做什麼錯? (注:我有限的經驗與Python)
嗯,這是令人尷尬的。我發誓,我以前嘗試過,但得到了類型例外。 – Brett
我想我應該多讀一點關於Python中的類和實例屬性,我會意識到我在這種情況下使用了不正確的類屬性。謝謝。 – Brett