首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将类实例方法传递给Python (2.7)中的另一个函数

将类实例方法传递给Python (2.7)中的另一个函数
EN

Stack Overflow用户
提问于 2014-04-02 10:36:41
回答 2查看 1.6K关注 0票数 1

对不起,如果标题没有意义,我对此还比较陌生。这是我的密码:

代码语言:javascript
复制
class MeanFlow:
    def __init__(self, V0=1):
        self.V0 = V0
    def LHS(self, t, y):
        return y[0]*self.V0


def velocity_field(w,f):
    z = 0 # dummy 
    u = f(z,w).real
    v = -1*f(z,w).imag 
    return u, v

w0 = 1
mean = MeanFlow()
dwdz = mean.LHS
print(velocity_field(w0, dwdz))

但是我得到了错误TypeError: 'int' object has no attribute '__getitem__'

我的问题是如何将这个函数(类实例的一个方法)传递给另一个函数。如果我在类之外定义函数并将它传递给另一个函数,这是可行的,但不是我想要的。谢谢!

编辑:错误return = y[0]*self.V0已经更正。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-02 10:46:50

生成TypeError: 'int' object has no attribute '__getitem__'的原因是:

代码语言:javascript
复制
y[0]

这是因为此时,y的值是1,一个整数,而y[0]的作用就好像y是一个列表或字符串(__getitem__是获取列表中项的方法)。如果y是一个列表(例如y = [1]),它就会工作得很好。

如果您删除了[0],那么您就是在做生意:

代码语言:javascript
复制
class MeanFlow:
    def __init__(self, V0=1):
        self.V0 = V0
    def LHS(self, t, y):
        return y*self.V0


def velocity_field(w,f):
    z = 0 # dummy 
    u = f(z,w).real
    v = -1*f(z,w).imag 
    return u, v

w0 = 1
mean = MeanFlow()
dwdz = mean.LHS
print(velocity_field(w0, dwdz))
票数 3
EN

Stack Overflow用户

发布于 2014-04-02 10:44:48

您的代码中有一个错误。您将1作为第一个参数传递给velocity_field,而后者又将其作为第二个参数传递给LHS (y)。最后,通过执行__getitem__调用y上的y[0],这会引发异常。

此外,当您将结果分配给return时,会出现语法错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22808764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档