我目前正在开发一个涉及从命令行读取单个字符而不等待换行符的项目。我找到了一个有用的答案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=inkey
或k=_Getch
等,但之后它无法正常工作。据我所知,先前没有定义inkey()
方法,因此似乎变量inkey=_Getch()
以某种方式被用作函数。
我不明白这里发生了什么。这怎么可能?正在使用的基础机制是什么?如果有人能对此有所了解,我会很高兴。
答案 0 :(得分:1)
_Getch
是一个类,inkey
是该类的实例。它不是一种功能。
class A:
pass
a = A() # instantiate an object of class A
你一定要阅读python docs。