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
  • 相关阅读:
    nginx入门与实战
    python开发之virtualenv与virtualenvwrapper讲解
    Linux下的python3,virtualenv,Mysql、nginx、redis安装配置
    Linux系统基础优化及常用命令
    vim与程序员
    Shell基本命令
    Linux之文档与目录结构
    远程连接Linux
    oracle 根据时间戳查询date类型sql
    oracle 锁用户
  • 原文地址:https://www.cnblogs.com/yqpy/p/9286047.html
Copyright © 2011-2022 走看看