Python |返回类似于“ os.get_terminal_size”的内容

时间:2019-11-14 16:42:35

标签: python python-3.x

我想实现类似于返回os.get_terminal_size

的方法
print(myFunction())

myFunction(a=1, b=2)

print(myFunction().a)    # 1

print(myFunction().b)    # 2

示例:

import os
os.get_terminal_size()
'os.terminal_size(columns=169, lines=40)'

os.get_terminal_size().columns
169

type(os.get_terminal_size)
'<class 'os.terminal_size'>'

我该怎么做?

2 个答案:

答案 0 :(得分:2)

type(os.get_terminal_size)表明它是一个类,而不是函数。

第一行还显示它具有方法__str__以显示带有值的格式化文本

class MyClass:

    def __init__(self):
        self.columns = 169
        self.lines = 40

    def __str__(self):
        return 'MyClass(columns={}, lines={})'.format(self.columns, self.lines)

print(MyClass())
# MyClass(columns=169, lines=40)

print(MyClass().columns)
# 169

编辑:

它也没有参数,但是如果要参数,则需要

class MyClass:

    def __init__(self, columns=169, lines=40):
        self.columns = columns
        self.lines = lines

    def __str__(self):
        return 'MyClass(columns={}, lines={})'.format(self.columns, self.lines)

print(MyClass())
# MyClass(columns=169, lines=40)

print(MyClass(columns=1, lines=2))
# MyClass(columns=1, lines=2)

但是它不能保留值-它需要类的实例才能保留它们。

print(MyClass(columns=1, lines=2).columns)
# 1

print(MyClass().columns)
# 169

my_instance = MyClass(columns=1, lines=2)
print(my_instance.columns)
# 1

答案 1 :(得分:0)

我对您的问题的解释是,您想以其他方式自己实现get_terminal_size

shutil.get_terminal_size包装os.get_terminal_size并基本上执行优化,在其中查找${COLUMNS}${LINES}环境变量作为快捷方式。查找失败,则将其推迟到os.get_terminal_size。其源代码为here

对于os.get_terminal_size的实现,它是用c编写的,并且在后台利用了ioctlconio.h。该代码位于here