首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将类方法传递到python中的类方法的问题

将类方法传递到python中的类方法的问题
EN

Stack Overflow用户
提问于 2014-05-15 03:05:13
回答 1查看 56关注 0票数 1

下面是python代码(稍微简化了一点,但也犯了同样的错误)。

代码语言:javascript
复制
class traffic(object):
    def __init__(self, testObj):
        try:
            <do something>
        except AssertionError:
            sys.exit (1)
    def add(self, phase='TEST'):
        <do something>
    def check(self, phase='TEST'):
        <do something>

class testcase(object):
    def __init__(self):
        try:
            <do something>
        except AssertionError:
            sys.exit (1)
    def addSeqPost(self, cmdObj):
        print "add Seq. for POST"
        cmdObj(phase='POST')

tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add())

我得到了下面的TypeError:

代码语言:javascript
复制
Traceback (most recent call last):
  File "test.py", line 25, in <module>
    tc.addSeqPost(test.add())
  File "test.py", line 20, in addSeqPost
    cmdObj(phase='POST')
TypeError: 'NoneType' object is not callable

如果我将代码更改为,它可以工作,但这不是我想要的:

代码语言:javascript
复制
    def addSeqPost(self, cmdObj):
        print "add Seq. for POST"
        cmdObj.add(phase='POST')

tc.addSeqPost(test())

我想让它更通用,因为test()可能有更多的方法,我想要传递到tc.addSeqPost()中,比如tc.addSeqPost(test.check())。

非常感谢。为了你的时间和帮助

在alKid的帮助下。

还有一个问题是,如果我想用test.check(duration=5)传递一个参数,该怎么办?一旦我这样做,我就得到了我不想/不需要返回任何add!的TypeError...But!

示例:

代码语言:javascript
复制
    ...
    def check(self, phase='TEST', duration=0):
        <do something>

tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add)
tc.addSeqPost(test.check(duration=5))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-15 03:06:50

test.add()将不返回函数,它运行该函数并返回返回的值。由于add不返回任何内容,所以传递的对象是None

代码语言:javascript
复制
tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add)

另外,请记住,test.add需要两个参数。selfphase.你得通过他们两个。

代码语言:javascript
复制
def addSeqPost(self, cmdObj):
    print "add Seq. for POST"
    cmdObj(self, phase='POST') #pass an instance of `testcase` to the function.

传递另一个类的实例可能不是您想要做的,但它只是一个示例。

希望这能有所帮助!

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

https://stackoverflow.com/questions/23668554

复制
相关文章

相似问题

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