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)
怎么会有这种行为?
谢谢!
注意:问题不是特定于元组数据类型; 它可以是任何东西,例如像熊猫数据帧.我只想返回一些属性数据,无论它是什么类型.
如错误所示,您__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)