如何在直接调用时使python对象返回属性数据

moc*_*llo 4 python object call

所以我想在Python中使用这样的东西:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return self.name, self.age

p = Person('A', 20)
Run Code Online (Sandbox Code Playgroud)

然后希望直接调用对象p来获取元组(self.name,self.age)

但正如您在运行此程序时所看到的那样,您会遇到问题:

TypeError: __repr__ returned non-string (type tuple)
Run Code Online (Sandbox Code Playgroud)

怎么会有这种行为?

谢谢!

注意:问题不是特定于元组数据类型; 它可以是任何东西,例如像熊猫数据帧.我只想返回一些属性数据,无论它是什么类型.

sch*_*tte 5

如错误所示,您__repr__必须返回一个字符串

def __repr__(self):
    return self.name + str(self.age)
Run Code Online (Sandbox Code Playgroud)

现在,如果你的目标是编写代表对象的元组的自定义方式,你要找的是_iter__不是,

def __iter__(self):
    yield self.name
    yield self.age

p = Person('A', 20)
print(tuple(p))
>>>>('A', 20)
Run Code Online (Sandbox Code Playgroud)