Mám otázku o type objektu vIronPython. Vytvoril som .NET v C # (vytvoril som triedu MyClass) a zostavil som svoj projekt triedy knižníc. Povedzme, že som vytvoril TestLibrary.dll takýmto spôsobom. Potom som odkazoval na túto knižnicu v mojom projekte IronPython a vytvoril triedu IronPython, ktorá zdedí typ .NET, ktorý je v mojom TestLibrary.dll. Môj kód vyzerá takto:
import clr
clr.AddReferenceToFileAndPath(r"C:TestLibraryTestLibrarybinDebugTestLibrary.dll")
from TestLibrary import *
class TestPythonClass(MyClass):
def doSomething(self):
print("Hello")
Ale keď som vytvoril objekt mojej TestPythonClass, zistil som, že typ tohto objektu je "IronPython.NewTypes.TestLibrary.MyClass_15 $ 16".
testPythonClass = TestPythonClass()
typeToString = testPythonClass.GetType().ToString()
Môže mi niekto poskytnúť nejaké ďalšie informácie, prečo je typ môjho objektu IronPython skutočne typu, ktorý je deklarovaný do TestLibrary.dll? A prečo typ nie je TestPythonClass?
odpovede:
2 pre odpoveď č. 1IronPython používa reflexiu na zvládnutie .NET.
Na .GetType()
Metóda volá typ CLR. Jeho rovnaké ako telefonovanie
clr.GetClrType(type(testPythonClass))
Malo by byť iné, ak zavoláte
type(testPythonClass)
dostanete python triedy.