zoukankan      html  css  js  c++  java
  • Python内置函数Str() VS repr() 及__str__() VS __repr__()方法

    一、str() VS repr() 函数

    1、str()函数把一个对象转化为字符串(供人阅读的形式),repr()函数返回一个对象的字符串表现形式(供解释器读取的形式)

    >>>str(234)

    '234'

    >>>repr(234)

    '234'

    >>>str('Good Day')

    'Good Day'

    >>>repr('Good Day')

    '' 'Good Day' ''                         # 单引号外面加双引号是什么鬼?

    >>> l = 'a list'

    >>>str(l)

    'a list'

    >>>repr(l)

    '' 'a list' ''                     #单引号外面加双引号,什么鬼?

    2、repr()函数的结果一般能通过eval()求值的方法获取到原对象

    >>>eval(repr(l))

    'a list'  

    3、对于类对象,对类实例调用repr()函数,返回其class、module、address

    >>>class Student():

      pass

    >>>s = Student()

    >>>repr(s)

    '<__main__.Student object at 0x000000E6F81dc18>'

    >>>str(s) 

    '<__main__.Student object at 0x000000E6F81dc18>'

    >>>s

    <__main__.Student object at 0x000000E6F81dc18>   # 直接显示变量调用__repr__()方法,想要直接显示的结果是可直接阅读的信息,要改写__repr__()方法

    >>>print(s)

    <__main__.Student object at 0x000000E6F81dc18> # 想打印出可直接阅读的信息,要改写__str__()方法

    二、__str__() VS __repr__()

    >>>class Readers():

        def __init__(self,nationality):

          self.nationality = nationality

        def __str__(self):

          return 'You are %s.' % self.nationality

    >>>s = Readers('Chinese')

    >>>print(s)

    You are Chinese.

    >>>s

    <__main__.Readers object at ..........................>     #直接显示依然是class/object/address,因为没有改写__repr__()方法,改写方式和__str__()一样,用简便方法

    >>>class Readers():

        def __init__(self,nationality):

          self.nationality = nationality

        def __str__(self):

          return 'You are %s.' % self.nationality

        __repr__ = __str__                                # 简便方法 __repr__ = __str__

    >>>s =Readers('Chinese')

    >>>s

    You are Chinese.

    >>>print(s)

    You are Chinese

  • 相关阅读:
    poj1862---变形虫(贪心)
    poj1833---字典序算法
    poj1799---解析几何
    poj1665
    poj1663---纯粹找规律
    poj1658
    poj1657---chessboard
    poj1656---数黑格子
    poj1617---columnar encryption
    查找两个文件的相同之处,不同之处
  • 原文地址:https://www.cnblogs.com/lyu454978790/p/8624036.html
Copyright © 2011-2022 走看看