方法的参数未传递给d

2024-04-20 01:48:28 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,我有一个定义如下的方法:

from x.y import util
class my_Class(some_object):
    @util.myDecorator
    def foo(self, log_file):
    '''
    Test that search entered into the search bar is the search being
    executed in the job.
    '''
    self.some_page.open()
    textarea = self.some_page.searchbar

    searchbar.run_search(log_file.search_string)
    self.browser.capture_screenshot()
    self.some_page.jobstatus.wait_for_job_complete()

    self.verify_equals(
        self.some_page.jobstatus.event_count,
        log_file.event_count,
        "Event count doesn't seem to be right.")

装饰师在档案里利用率你知道吗

def mydecorator(func):
    def timeit(*args, **kwargs):
        start_time = time.time()
        ret=func(*args, **kwargs)
        end_time = time.time()
        print end_time - start_time
        return ret
    return timeit

当我尝试执行代码时,它在ret=func(*args, **kwargs)失败,并显示错误消息

TypeError: foo() takes exactly 2 arguments (1 given)

  • 我打印了*args的内容(使用','.join(str(each) for each in args))以查看它包含的内容,然后打印出来

<....my_Class object at ...>

对于只有一个arg(self)的方法,decorator工作得很好。我是不是漏了什么?你知道吗


Tags: the方法selflogsearchtimedefcount
1条回答
网友
1楼 · 发布于 2024-04-20 01:48:28

在回答评论时,请注意:

>>> import time
>>>
>>> def mydecorator(func):
...     def timeit(*args, **kwargs):
...         start_time = time.time()
...         ret=func(*args, **kwargs)
...         end_time = time.time()
...         print end_time - start_time
...         return ret
...     return timeit
...
>>> class my_Class(object):
...     @mydecorator
...     def foo(self, arg_1):
...         print arg_1
...
>>> my_Class().foo(100)
100
0.0

相关问题 更多 >