首页 > 解决方案 > 以相同的方式为 Python 中的多个类重新定义 __str__ 方法

问题描述

我有多个类,如果我实例化其中的任何一个,我希望能够通过重新定义这些类的str方法来“打印”实例化的对象。str方法对于所有类都是完全相同的,我不想在每个类下都重复这个方法。如何为所有类执行此操作,而不必在每个类下定义str?班级装饰员会在这里帮忙吗?

class testClass1:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return(self.value + 5)

class testClass2:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return(self.value + 5)

test1 = testClass1(2)
print(test1)

标签: pythonclassobjectmethodsprinting

解决方案


您可以定义一个具有所需功能的父类并在每个子类中继承它:

class Stringer:
    def __str__(self):
        return(str(self.value + 5))
    
class testClass1(Stringer):
    def __init__(self, value):
        self.value = value

class testClass2(Stringer):
    def __init__(self, value):
        self.value = value

test1 = testClass1(2)
print(test1)
#7 

test2 = testClass2(5)
print(test2)
#10 

推荐阅读