zoukankan      html  css  js  c++  java
  • python特殊函数__str__、__repr__和__len__

    1.__str__

    首先介绍__str__

    class Students(object):
        def __init__(self, *args):
            self.names = args

    # def __str__(self): #   return str(self.names) # __repr__ = __str__ ss = Students('hyq','ysy') ss >>><__main__.Students at 0x2075a779828>

    打印类对象显示的是对象的内存地址,下面重构__repr__和__str__方法

    再看:

    class Students(object):
        def __init__(self, *args):
            self.names = argsdef __str__(self):
            return str(self.names)
    #     def __repr__(self):
    #         return str(self.names)
    ss = Students('hyq','ysy')
    ss
    
    >>><__main__.Students at 0x2075a78a860>
    class Students(object):
        def __init__(self, *args):
            self.names = args

    # def __str__(self): # return str(self.names) def __repr__(self): return str(self.names) ss = Students('hyq','ysy') ss >>>('hyq', 'ysy')

    可以看到,重构__repr__方法后,直接输出对象,能够按照__repr__中定义的格式进行显示;

    而重构__str__方法后,直接输出对象,显示的是对象的内存地址,并不是__str__定义的格式

    当然,用print都能够显示__repr__和__str__定义的格式

    class Students(object):
        def __init__(self, *args):
            self.names = args

    # def __str__(self): #   return str(self.names) def __repr__(self): return str(self.names) ss = Students('hyq','ysy') print(ss) >>>('hyq','ysy') ————————————————————————————————————————————分割线———————————————————————————————————— class Students(object): def __init__(self, *args): self.names = argsdef __str__(self): return str(self.names) # def __repr__(self): # return str(self.names) ss = Students('hyq','ysy') print(ss) >>>('hyq','ysy')

    注意:

    在代码中一般写成:

    def __str__(self):
            return str(self.names)
    __repr__ = __str__

    2.__len__

    如果一个类表现得像一个list,要获取有多少元素,就得用len()函数

    要让len()函数正常工作,类必须提供一个特殊方法__len__(),返回元素的个数

    class Students(object):
        def __init__(self, *args):
            self.names = args
        def __len__(self):
            return len(self.names)
    
    ss = Students('hyq','ysy')
    print(len(ss)
    
    
    >>>2
    人生苦短,何不用python
  • 相关阅读:
    Python-Pandas库-DataFrame处理excel/csv表格
    Python-Pandas库-数据结构Series用法总结
    Python-yaml文件处理
    Python-全局配置文件(conf.ini)的读取与写入
    Python-面向对象经典习题
    Python-异常处理
    浅谈postman和jmeter的用法与区别
    性能测试——常用指标的认识
    性能测试——监控工具Grafana的介绍与使用
    ios自动化测试之Java + testng +maven + appium 框架及脚本编写和运行
  • 原文地址:https://www.cnblogs.com/yqpy/p/9286047.html
Copyright © 2011-2022 走看看