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
  • 相关阅读:
    jQuery:自学笔记(1)——基础入门
    Android开发——Accessibility机制实现模拟点击(微信自动抢红包实现)
    Android开发——常用ADB命令的使用
    虚拟现实开发一些建议
    Android开发——Activity生命周期
    JVM——内存管理和垃圾回收
    2016年工作中遇到的问题41-50:Dubbo注册中心奇葩问题,wifi热点坑了
    2016年工作中遇到的问题41-50:Dubbo注册中心奇葩问题,wifi热点坑了
    Spring核心技术(十)——JSR-330标准注解
    Spring核心技术(九)——Spring管理的组件和Classpath扫描
  • 原文地址:https://www.cnblogs.com/yqpy/p/9286047.html
Copyright © 2011-2022 走看看