Python:一个对象可以有一个对象作为“默认”表示吗?

Ber*_*989 1 python oop methods class

我刚刚开始接触 OOP,所以如果我的问题像 2+2 一样明显,我提前道歉。:)

基本上,我创建了一个类,将属性和方法添加到 panda 数据框架。这是因为我有时希望执行复杂但重复的任务,例如与一堆其他表合并、删除重复项等。因此,能够使用预定义的方法一次性完成这些任务是令人愉快的。例如,我可以创建一个像这样的对象:

mysupertable = MySupperTable(original_dataframe)
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作:

mysupertable.complex_operation()
Run Code Online (Sandbox Code Playgroud)

其中,original_dataframe 是定义为类的属性的原始 panda 数据框(或对象)。现在,这一切都很好,但是如果我想打印(或只是访问)原始数据框,我必须做类似的事情

print(mysupertable.original_dataframe)
Run Code Online (Sandbox Code Playgroud)

有没有办法让这种情况“默认”发生,所以如果我这样做:

print(mysupertable)
Run Code Online (Sandbox Code Playgroud)

它会打印原始数据帧,而不是内存位置?

我知道可以在类中实现strrep方法,它们返回对象的默认字符串表示形式。我只是想知道是否有类似的魔术方法(或其他)来默认显示特定属性。我尝试查找此内容,但我认为我找不到合适的词语来描述我想做的事情,因为我似乎无法找到答案。

谢谢你!干杯

Sam*_*ord 5

在你的MySupperTable课堂上,做:

class MySupperTable:

    # ... other stuff in the class

    def __str__(self) -> str:
        return str(self.original_dataframe)
Run Code Online (Sandbox Code Playgroud)

这将使当 aMySupperTable转换为 a时str,它会将其转换original_dataframe为 astr并返回它。