Python 3.x 初始化后引用类时返回非字符串对象

Python 3.x 初始化后引用类时返回非字符串对象,python-3.x,Python 3.x,经过一番搜寻,我找不到答案。我正在尝试为python解释器生成一个临时的“下划线”,希望它既能像python控制台中的一样工作,又能存储多个以前的结果 到目前为止我已经试过了 class Underscore(): def __init__(self): self.deque = collections.deque([], 10) def __getitem__(self, index): return self.deque[index]

经过一番搜寻,我找不到答案。我正在尝试为python解释器生成一个临时的“下划线”,希望它既能像python控制台中的
一样工作,又能存储多个以前的结果

到目前为止我已经试过了

class Underscore():
    def __init__(self):
        self.deque = collections.deque([], 10)
    def __getitem__(self, index):
        return self.deque[index]
    def append(self, obj):
        self.deque.appendleft(obj)
    def __repr__(self):
        return self.deque[0]
我的想法是,我可以使用
\uu
\u0]
访问命令行会话的最后输出,然后可以使用
\ui]
访问更多以前的结果

但是我遇到的问题是,
\uuuu repr\uuu
只能返回一个字符串,这不是我想要的,但意味着此示例代码破坏了类:

>>> datetime.utcnow()
<DateTime ...>
# Behind the scenes, I call _.append(returned_datetime)
>>> _[0].month # works, but not the most ideal way
>>> _.month # crashes because repr did not return string.
>datetime.utcnow()
#在幕后,我调用u.append(返回datetime)
>>>_[0]。月#有效,但不是最理想的方式
>>>_u.month#崩溃,因为repr未返回字符串。

所以我要问的是:有可能以任何方式做到这一点吗?或者整个想法都是白日梦?

我正在通过Discord通过机器人接口编程我自己的互动会话。我本机没有可用的
,这就是我想自己重新实现
的原因。基本上,我只是将
\uu
旁边的所有变量放入一个锁定的
eval()
命令。
\u
只是一个普通变量,由REPL分配先前的值。这不是什么特别的东西。当引用一个对象时,不会返回字符串(除非您的对象是字符串),而是返回对象本身。那么这是否意味着我想要的东西不可能实现呢?真遗憾。。。我猜下一个最好的选择是只使用
和两个不同的变量。。。