将类实例传递给函数
首先,我知道有其他类似的问题,实际上其中一个问题的标题和这个是一样的,但我从那些问题中没有得到任何帮助。
我正在使用功能模型接口(Functional Mockup Interface)。我有一个功能模型单元(FMU),它基本上是一个Python类的实例。
我想把这个实例传递给一个函数,以获取雅可比矩阵,但我无法将这个类的实例传递给一个在模块中定义的函数。如果我在模块中这样定义一个函数:
# Function to take an FMU instance and do something using it's methods
def do_something_to_fmu(fmu):
N=fmu.get_ode_sizes() # get_ode_sizes() is a function that returns a tuple
return N
我遇到的错误是:'builtin_function_or_method'对象没有'__getitem__'这个属性。
令人惊讶的是,如果我在控制台中定义同样的函数,它就能正常工作。还有一点我需要提到的是,我不能修改这个类。它来自另一个来源,也就是pyfmi库,它将一段modelica代码转换成FMU。
我认为问题出在将类实例传递给函数上,我正在阅读文档以找出哪里出错了,但如果有人能建议一个更好的方法来从FMU中获取雅可比矩阵,那将是非常有帮助的。(一个FMU有一个方法可以提供导数。我正在尝试使用这个方法来数值计算雅可比矩阵。)
谢谢
1 个回答
0
我觉得你是在正确的方式下“传递一个类的实例”。这和你传递其他对象是一样的,比如一个列表。
无论如何,这里有一个例子:
def myFunc(instance):
print instance
return type(instance)
myInstance = myClass() //creating an instance of myClass
print myFunc(myInstance)
这段代码会输出以下内容: