zoukankan      html  css  js  c++  java
  • __str__和__repr__

    '''__str__'''
    class Foo_1:
       pass
    
    f = Foo_1()
    print(f) # <__main__.Foo_1 object at 0x0000020783813D30> ---> 系统默认__str__ --->相当于执行str(f)--->f.__str__()
    
    
    class Foo:
       def __str__(self):
          return '自定制的对象的显示方式'
    
    f1 = Foo()
    print(f1) # 自定制的对象的显示方式 ---> 自定制__str__
    
    
    class Message:
       def __init__(self, name, age):
          self.name = name
          self.age = age
    
       def __str__(self):
          return '名字是%s 年龄是%s' % (self.name, self.age)
    
    f2 = Message('alex', 18)
    print(f2) # 名字是alex 年龄是18 ---> 自定制__str__
    
    
    '''repr()内置函数'''
    # repr() 函数将对象转化为供解释器读取的形式
    s = 'alex'
    print(repr(s)) # 在终端能够看到输出结果为"'alex'"
    d = {'name': 'lhf', 'age': 18}
    print(repr(d)) # 在终端能够看到输出结果为"{'name': 'lhf', 'age': 18}"
    
    
    '''__repr__'''
    class Cat:
       def __init__(self, name):
          self.name = name
    
       def __repr__(self):
          return '名字是%s' % self.name
    
    c = Cat('alex')
    c # 在终端中,输入一个实例对象c显示的就是__repr__返回的内容
    print(c)  # 名字是alex
    
    
    '''__str和__repr之间的区别'''
    class Dog:
       def __init__(self, name):
          self.name = name
    
       def __str__(self):
          return '来自str'
    
       def __repr__(self):
          return '来自repr'
    
    d1 = Dog('alex')
    print(d1)
    # 当__str__和__repr__同时存在时,执行的是__str__;也就是说print(d1)相当于执行的是str(d1)--->d1.__str__();
    # 当只有__repr__存在时,print依旧是先找str(d1)--->d1.__str__(),找不到就执行__repr__;__repr__在终端可以不调用print,直接输入实例对象即可显示返回内容
    # 注意:这两方法的返回值必须是字符串,否则抛出异常
    while True: print('studying...')
  • 相关阅读:
    Spring Bean(一)
    Spring IOC(一)
    三种常用的查找算法
    分布式架构的一致性
    Java内存区域笔记(一)
    分组交换和电路交换
    Python说文解字_Python之多任务_03
    Python说文解字_Python之多任务_02
    Python说文解字_Python之多任务_01
    Python说文解字_杂谈09
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14718065.html
Copyright © 2011-2022 走看看