首页 > 解决方案 > 如何使类默认返回值成为字典

问题描述

我希望标题对我的目的来说足够清楚,老实说我没有尝试太多,因为我真的不知道去哪里,我什至不确定这是否完全可能。我知道它可以覆盖__str____int__返回这两种类型的值。我确定您在问“为什么没有类函数来返回您想要的东西”,并且确定这是一个合理的问题,但我想要一种更简洁的方法来做到这一点。

我已经搜索了其他可能有帮助的类似问题和示例,但没有一个真正符合我的意图。我能得到的最接近的是我在下面尝试覆盖__new__和的示例__repr__

class student:
    def __init__(self, name, age):
        self.info = {'name': name, 'age': age}
    def __new__(self, name, age):
        return self.info
    def __repr__(self, name, age):
        return self.info
student_data = student('Rob', 18)

print(student_data)

提前致谢

标签: pythonpython-3.xpython-2.7

解决方案


你很亲密。两者都__str__必须__repr__返回一个字符串。print将在内部调用您的对象的__str__表示。因此,只需让您的方法返回(IOW )__str__的字符串表示形式。self.infostr(self.info)

class Student:
    def __init__(self, name, age):
        self.info = {'name': name, 'age': age}

    def __repr__(self):
        return str(self.info)

    def __str__(self):
        return self.__repr__()

student_data = Student('Rob', 18)
print(student_data)
# {'name': 'Rob', 'age': 18}

推荐阅读