python中 str 和 repr_Python中__str__和 __repr__

__str__, __repr__ 是python类中的两个魔术方法,前者是在类实例当作字符串时调用,后者通常给程序员调试信息时给输出,都可以直接显示类信息。__repr__ = __str__,简单来说,就是将用__str__方法覆盖__repr__方法,即调试信息与字符输出信息一样。

class Test:

def __init__(self, n, a):

self._n = n

self._a = a

@property

def n(self):

return self._n

#使用 __str__和 __repr__任一都可以实现类信息显示

def __str__(self):

#self._a为%d或者%s无影响

return '%s: %s '% (self._n, self._a)

# def __repr__(self):

# return '%s %s'% (self._n, self._a)

def main():

t = Test('al', 20)

print(t)

if __name__ == '__main__':

main()

特例(同时需要__str__和__repr__才能打印出类信息 ):假设print(t)的每个成员是card,最后就是调用card的repr,调用顺序print(t)调用t.str(),t.str() = t.repr(), t.repr循环调用成员card.repr()。

class Card(object):

"""一张牌"""

def __init__(self, suite, face):

self._suite = suite

self._face = face

@property

def face(self):

return self._face

@property

def suite(self):

return self._suite

def __str__(self):

if self._face == 1:

face_str = 'A'

elif self._face == 11:

face_str = 'J'

elif self._face == 12:

face_str = 'Q'

elif self._face == 13:

face_str = 'K'

else:

face_str = str(self._face)

return '%s %s' % (self._suite, self._face)

# __repr__ = __str__

def __repr__(self):

return self.__str__()

def main():

t = [Card(suite, face)

for suite in '♠♥♣♦'

for face in range(1, 14)]

print(t)

if __name__ =='__main__':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值