将变量转换为函数? (代码有效,有趣的行为)

时间:2014-03-14 05:06:03

标签: python function variables behavior

我目前正在开发一个涉及从命令行读取单个字符而不等待换行符的项目。我找到了一个有用的答案here,并将其跟踪到其来源here。我稍微修改了代码,现在我有以下内容:

import sys,tty,termios
class _Getch:       
    def __call__(self):
            fd = sys.stdin.fileno()
            old_settings = termios.tcgetattr(fd)
            try:
                tty.setraw(sys.stdin.fileno())
                ch = sys.stdin.read(1)
            finally:
                termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
            return ch

def main():
    inkey = _Getch()
    while(1):
        k=inkey()
        if k!='':break
    print 'you pressed', k

我在这里感兴趣的部分是 inkey() 。我已尝试将其修改为k=inkeyk=_Getch等,但之后它无法正常工作。据我所知,先前没有定义inkey()方法,因此似乎变量inkey=_Getch()以某种方式被用作函数。

我不明白这里发生了什么。这怎么可能?正在使用的基础机制是什么?如果有人能对此有所了解,我会很高兴。

1 个答案:

答案 0 :(得分:1)

_Getch是一个类,inkey是该类的实例。它不是一种功能。

class A:
    pass

a = A() # instantiate an object of class A

你一定要阅读python docs