将类实例传递给函数

时间:2014-06-19 09:15:29

标签: python python-2.7

首先,我知道还有其他类似的问题,事实上,其中一个问题具有相同的标题,但我无法从其他问题中得到任何帮助。

我正在使用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库,它采用一段模式代码并转换为FMU。

我认为错误在于将一个类实例传递给一个函数,而我正在阅读文档以找出问题所在,但如果有人能提出一个更好的方法从FMU获取jacobian,这将是一个很大的帮助。 (FMU有一种方法可以给出衍生物。我正在尝试的是使用它并以数字方式计算雅可比矩阵)

谢谢

1 个答案:

答案 0 :(得分:0)

在我看来,你是以正确的方式'传递一个类实例'。 它与传递任何其他对象的方式相同。例如。一个列表 无论如何这是一个例子,

def myFunc(instance):
    print instance
    return type(instance)

myInstance = myClass() //creating an instance of myClass
print myFunc(myInstance)

代码将输出以下内容