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...')
  • 相关阅读:
    【iOS】去掉Tabbar顶部线条
    iOS中控制器的释放问题
    码云平台帮助文档_V1.2
    iOS键盘 样式/风格
    cocoapods的安装 升级版
    Unity异常捕获
    tomcat和jdk的安装配置
    Unity读取Excel表格
    NFS
    K8S存储相关yaml
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14718065.html
Copyright © 2011-2022 走看看