为什么会直接调用类里面的函数,没有调用类外部的调用函数借口

2465阅读 0评论2012-08-16 大方无隅
分类:Python/Ruby

问题描述
我有一个python 文件 megamon_connection.py, 这个文件里面定义了一个类,如下
    class megamon_connection:
        def connect_to_megamon(self, host, port, timeout, username, password): 
            oldcurrent = self._current 
            try: 
                self._current = TelnetConnection(host, port, self._prompt[:], timeout, "CR") 
                self._current.set_loglevel(self._loglevel) 
                self._current.un = username 
                self._current.pw = password 
                result = self._login(username, password) 
                if result: 
                    found = re.search(r"<\s*$",result) 
                    if found: print "normal megamon via telnet" 
            except: 
                 self._current = oldcurrent raise
我在类外面定义了同名调用函数
def connect_to_megamon(host, port=23, timeout="30sec", user="SYSTEM", passwd="SYSTEM", msg=None):
    """This keyword opens a connection to a megamon system and logs in, now support telnet mode.

    | Input Paramaters | Man. | Description |
    | host    |  Yes  | Identifies to host |
    | port    |  No   | Allows to change the default telnet port |
    | timeout |  No   | Timeout for commands issued on this connection. Default is 120 sec |
    | user    | No    | Authentication information |
    | passwd  | No    | Authentication information |
    | msg     |  No   |   |

    Example
    | Open Test | Connect To megamon | 10.69.248.247 |
    """
    try:
        conn = megamon_connection()
        current = conn.connect_to_megamon(host, port, timeout, user, passwd)
        
    except Exception, e:
        megamon_error._raise_critical_exceptions(e)
        if msg and msg.lower() != 'none':
            raise AssertionError(msg)
        else:
            raise  
    global current_conn
    current_conn = conn  
    return current

我在robot写了调用的case(已经在case中import 这个python文件)
Connect To Megamon ${HOST}

但是一直报错
Keyword 'megamon_connection.Connect To Megamon' expected 5 arguments, got 1.
这个问题查了半天,一直搞不明白,最后终于发现问题是,类名和文件名一样,直接调用到类里面的函数定义去了,没有调到外面的调用函数,所以又四个参数没有使用默认值,把类名或改文件名即可。


上一篇:ASCII字符集中的功能/控制字符
下一篇:eclipse中使用pydev解决: unresolved import