• python3.x __str__与__repr__


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

    repr(默认交互式回显)【来自python入门

    str(也就是打印语句) 一般用途

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

    打印操作会先尝试__str__和str内置函数(print运行的内部等价形式)通常返回用户一个友好显示

    __repr__用于所有其他环境之中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str,通常返回一个编码字符串,可以用来创建对象,或者给开发者一个详细的显示

    __repr__用于任何地方,除了当定义一个__str__的时候,使用print和str,要注意,没有定义__str__

    打印还是使用__repr__,但是反过来不成立,其他环境(交互式响应模式)只是使用__repr__不需要尝试__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__的区别

  • 相关阅读:
    fatal error LNK1123: 转换到 COFF 期间失败:文件无效或损坏
    CI:模拟进化与遗传算法
    贝叶斯网络
    朴素贝叶斯模型
    概率与不确定性(乘法法则与贝叶斯法则)
    关于“启发式”搜索的一个形象解释
    Python 字符串与数字拼接报错
    无法启动此程序因为计算机中丢失 xxx.dll
    Python 以指定的概率选取元素
    验证码之SimpleCaptcha (二)
  • 原文地址:https://www.cnblogs.com/liuruoqian/p/11383751.html
Copyright © 2020-2023  润新知