2016-12-27 58 views
2

我是Python和C#的新手。我試圖在C#中使用兩種方法制作DLL,如接口,並在COM中註冊後在python文件中調用它們。當調用Python中用C#編寫的函數時,'NoneType'對象不可調用

namespace Sample 
{ 
    public interface interf 
    { 
     bool printHello(string name); 

     void printWorld(); 

    } 

    public class A : interf 
    { 

     public bool printHello(string name) 
     { 
      Console.WriteLine(name); 
      return true; 
     } 


     public void printWorld() 
     { 
      Console.WriteLine("World!"); 
     } 
    } 
} 

我在python調用這些函數爲:

import win32com.client 

dllCall = win32com.client.Dispatch("Sample.A") 
hello = dllCall.printHello("Hello") 
dllCall.printWorld() 

我收到以下錯誤,當我嘗試執行Python文件。

Hello 
Traceback (most recent call last): 
    File "C:\Temp\sampleTest.py", line 23, in <module> 
World! 
    dllCall.printWorld() 
TypeError: 'NoneType' object is not callable 

什麼是我失蹤?

+0

好的第一個問題!大多數第一個問題都很糟糕...... –

+0

這只是一個預感,但我認爲你不能調用類型爲「void」的方法,因爲它被稱爲「NoneType」。你可能需要給每種方法一個真正的類型,以使其工作。 –

+0

但是,如果我添加一個像void printWorld(字符串名稱)的參數,並將其從python調用爲dllCall.printWorld(「World」),則上面的代碼可以正常工作。那麼,如果我沒有爭論地稱呼它,那麼問題是什麼? –

回答

1

最後我得到它的工作。 如果我呼叫printWorld沒有括號()

dllCall.printWorld 
相關問題