码迷,mamicode.com
首页 > 编程语言 > 详细

python3.x __str__与__repr__

时间:2019-08-20 16:42:44      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:ice   输出   对象   用户   区别   返回   显示   信息   core   

__repr__和__str__用于显示,__str__是面向用户的,而__repr__面向coder【调试与开发】

输出的话先调用__str__,通常返回时字符串显示,

__repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str。

它通常应该返回一个编码字符串,可以用来重新创建对象,或者给开发者详细的显示

以下是打印一个对象的信息,

重载该类的__str__,__repr__,__gt__,__lt__,__eq__等

class Person(object):

  def __init__(self, name, gender,age, **kw):
    self.name=name
    self.gender=gender
    self.age=age
#for k,v in kw.iteritems():py2.x
    for k,v in kw.items():#py3.x
      setattr(self, k, v)

  def __eq__(self, value):
    if self.gender == value.gender:
      return 1
    else:
      return 0
  def __gt__(self, value):
    if self.gender > value.gender:
      return 1
    else:
      return 0
  def __lt__(self, value):
    if self.gender < value.gender:
      return 1
    else:
      return 0

  def __repr__(self):
    return ‘(Student_repr: %s, %s)‘%(self.name, self.gender)
  def __str__(self):
    #print(self.name+‘ ‘+self.gender)这里不能直接print只能return
    return ‘(Student: %s, %s)‘%(self.name, self.gender)
  def __cmp__(self,s):
    if self.score == s.score:
      return self.name> s.name
    return -(self.score>s.score)

p = Person(‘Bob‘, ‘Male‘, age=18, course=‘Python‘)
L = [Person(‘Tim‘, 99, 18), Person(‘Bob‘, 68, 28), Person(‘Alice‘, 99, 29)]
def new_sort(obj):
  if obj.gender>=90:
    print(1)
  elif obj.gender>=60:
    print(2)
  else:
    print(3)

#print (p.age)
#print (p.course)
#print(p)
#print(L)
sorted(L, reverse=True)
print(L)#为什么这里输出的是list里面对象的地址? 这就是__str__跟__repr__的区别

python3.x __str__与__repr__

标签:ice   输出   对象   用户   区别   返回   显示   信息   core   

原文地址:https://www.cnblogs.com/liuruoqian/p/11383751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!