我正在使用 Python4Delphi
我有一个 python 文件,它上面声明了一个类,如下所示:
class Student:
SName = "MyName"
SAge = 26
def GetName(self):
return SName
def GetAge(self):
return SAge
我想获得这个类的引用并使用我的 Delphi 代码访问它的字段或方法
我在这里找到了一个例子:http: //www.atug.com/andypatterns/pythonDelphiTalk.htm
但是,当我尝试像该示例那样执行此操作时,会显示错误:“不支持此类接口”
这是我的德尔福代码:
var
Err : Boolean;
S : TStringList;
MyClass : OLEVariant;
PObj : PPyObject;
begin
...
S := TStringList.Create;
try
S.LoadFromFile(ClassFileEdit.Text);
Err := False;
try
PyEngine.ExecStrings(S);
except
on E:Exception do
begin
Err := True;
MessageBox(Handle, PChar('Load Error : ' + #13 + E.Message), '', MB_OK+MB_ICONEXCLAMATION);
end;
end;
finally
S.Free;
end;
if Err then
Exit;
Err := False;
try
try
PyEngine.ExecString('ClassVar.Value = Student()');
except
on E:Exception do
begin
Err := True;
MessageBox(Handle, PChar('Class Name Error : ' + #13 + E.Message), '', MB_OK+MB_ICONEXCLAMATION);
end;
end;
finally
if not Err then
begin
PObj := ClassDelphiVar.ValueObject;
MyClass := GetAtom(PObj);
GetPythonEngine.Py_XDECREF(PObj);
NameEdit.Text := MyClass.GetName();
AgeEdit.Text := IntToStr(MyClass.GetAge());
end;
end;
此行发生错误:
NameEdit.Text := MyClass.GetName();
似乎 MyClass 没有填充学生对象
我进行了很多搜索,发现 GetAtom 在新版本中已被弃用,但我该如何以另一种方式做到这一点?
- ClassDelphiVar 是一个 TPythonDelphiVar 组件,其中“ClassVar”作为 VarName