1
我有以下python代碼(有點簡化,但它確實犯了同樣的錯誤)。將類方法傳遞給python中的類方法的問題
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())
我得到以下類型錯誤:
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
如果我改變我的代碼,它的工作原理,但它不是我想什麼:
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)呢?儘快我這樣做,我得到了相同TypeError ...但我不想/需要返回任何東西從添加!
例子:
...
def check(self, phase='TEST', duration=0):
<do something>
tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add)
tc.addSeqPost(test.check(duration=5))
你是完全正確的,這個作品!我只需要使用test.add,完美!再次感謝 – FotisK
@ user3458191如果這個答案對您有幫助,請在接受按鈕上勾選,在投票按鈕下方:D – aIKid
還有一個問題,如果我想通過test.add(持續時間= 5)傳遞一個參數會怎樣?儘快我這樣做,我得到了相同TypeError ...但我不想/需要返回任何東西從添加!然後通過兩個參數 – FotisK