2014-03-14 16 views
1

我目前正在从事一项涉及从命令行读取单个字符而不等待换行符的项目。我找到了一个有用的答案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

_Getch是一类,而inkey是该类的一个实例。这不是一个功能。

class A: 
    pass 

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

你一定要读python docs

+0

这实际上使这一切都非常清楚。谢谢! – Newb

相关问题