Pthon魔术方法(Magic Methods)-可视化

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.关于可视化的魔术方法简介

  1.   __str__:
  2.     str()函数,format()函数,print()函数调用,需要返回对象的字符串表达式,即会默认调用该魔术方法。
  3.     如果没有定义该方法,就去调用"__repr__"方法返回字符串表达式,如果"__repr__"没有定义,就直接返回对象的内存地址信息。
  4.  
  5.   __repr__:
  6.     内建函数repr()对一个对象获取字符串表达。
  7.     调用"__repr__"方法返回字符串表达,如果"__repr__"也没有定义,就直接返回object的定义就是显示内存地址信息。
  8.  
  9.   __bytes__:
  10.     bytes()函数调用,返回一个对象的bytes表达,即返回bytes对象。

二.案例展示

  1. #!/usr/bin/env python
  2. #_*_conding:utf-8_*_
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie
  5.  
  6. class Person:
  7. def __init__(self,name,age=18):
  8. self.name = name
  9. self.age = age
  10.  
  11. def __repr__(self):
  12. return "repr:{},{}".format(self.name,self.age)
  13.  
  14. def __str__(self):
  15. return "str:{},{}".format(self.name,self.age)
  16.  
  17. def __bytes__(self):
  18. import json
  19. return json.dumps(self.__dict__).encode()
  20.  
  21. p1 = Person("Jason Yin")
  22.  
  23. print(p1) #print函数默认调用的是str方法
  24.  
  25. print("{}".format(p1)) #字符串的format方法也是调用"__str__"方法
  26.  
  27. print([p1]) #使用引用类型存储p1时,发现调用的时"__repr__"方法
  28.  
  29. print([str(p1)]) #我们可以显示使用str函数去调用"__str__"魔术方法,如果没有"__str__"方法就去找"__repr__"方法
  30.  
  31. print(bytes(p1)) #调用的是"__bytes__"方法
  32.  
  33. """
  34. 温馨提示:
  35. 在学习完可视化方法后,同学们应该明白之前我们看到所有的字符串输出其实都是别人封装好的魔术方法,比如:print(1,'1',['1',1])
  36. 因此,咱们不能通过判断是否带引号来判断输出值的类型,类型判断需要使用type或者isinstance.
  37. """
  38.  
  39. #以上代码执行结果如下:
  40. str:Jason Yin,18
  41. str:Jason Yin,18
  42. [repr:Jason Yin,18]
  43. ['str:Jason Yin,18']
  44. b'{"name": "Jason Yin", "age": 18}'

Pthon魔术方法(Magic Methods)-可视化的更多相关文章

  1. php中的魔术方法(Magic methods)和魔术常亮

    PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __cal ...

  2. Pthon魔术方法(Magic Methods)-描述器

    Pthon魔术方法(Magic Methods)-描述器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.描述器概述 1>.描述器定义 Python中,一个类实现了&quo ...

  3. Pthon魔术方法(Magic Methods)-反射

    Pthon魔术方法(Magic Methods)-反射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.反射概述 运行时,区别于编译时,指的时程序被加载到内存中执行的时候. 反射 ...

  4. Pthon魔术方法(Magic Methods)-上下文管理

    Pthon魔术方法(Magic Methods)-上下文管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上下文管理方法 __enter__: 进入与此对象相关的上下文.如果 ...

  5. Pthon魔术方法(Magic Methods)-可调用对象

    Pthon魔术方法(Magic Methods)-可调用对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.可调用对象方法 __call__: 类中定义一个该方法,实例就可以像 ...

  6. Pthon魔术方法(Magic Methods)-容器相关方法

    Pthon魔术方法(Magic Methods)-容器相关方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.容器相关方法汇总 __len__: 内建函数len(),返回对象的 ...

  7. Pthon魔术方法(Magic Methods)-运算符重载

    Pthon魔术方法(Magic Methods)-运算符重载 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python运算符对应的魔术方法 1>.比较运算符 <: ...

  8. Pthon魔术方法(Magic Methods)-bool

    Pthon魔术方法(Magic Methods)-bool 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.bool方法 __bool__: 内建函数bool(),或者对象放在逻 ...

  9. Pthon魔术方法(Magic Methods)-hash

    Pthon魔术方法(Magic Methods)-hash 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.hash方法 __hash__: 内建函数hash()调用的返回值,返 ...

随机推荐

  1. 双写mq后碰到没有消费问题记录

    上周双写mq后碰到遇到个问题,mq双写的一台机器有produce,另一台一直没有,但是有的那台机器没有消费者,导致另一个服务 一直没有可以消费的mq.原因是 mq在双写初始化配置的时候两个类文件重复了 ...

  2. jquery与angular的交互

    HTML: <table class="table table-striped" ng-app="myApp"> <tr> <th ...

  3. Vmware解决虚拟机不能联网的问题

    1. 设置为NAT模式 2. 启动win7的服务,命令窗口输入services.msc 回车 3. 修改Vmware的设置

  4. kafka生产部署

    kafka真实环境部署规划 1. 操作系统选型 因为kafka服务端代码是Scala语言开发的,因此属于JVM系的大数据框架,目前部署最多的3类操作系统主要由Linux ,OS X 和Windows, ...

  5. Python怎么去写单元测试用例去测试hello world呢

    逛着博客园,看到乙醇大佬的一篇随笔 https://www.cnblogs.com/nbkhic/p/9370446.html,于是就在想怎么测试这句hello world print('hello ...

  6. Debian系Linux源码安装Redis5.0.6

    一,先在官网下载源码包:https://redis.io/download 二,解压源码包,并cd到解压后的目录: 三,执行make MALLOC=libc: 接着cd src[解压的目录里有这个子目 ...

  7. (语法基础)浅谈面向切面编程(AOP)

    一:前言 面向切面编程是一个很重要的编程思想,想要写出一个便于维护的程序,理解AOP并且能熟练的在实际编程中合理的运用AOP思想是很有必要的 二:AOP的基本概念 基础概念:AOP中文翻译面向切面编程 ...

  8. IDEA界面太丑??尝试一下这几个风格

    >>>>>>>>>>原文地址<<<<<<<<<< >>>> ...

  9. day52——jquery引入与下载、标签查找、操作标签

    day52 jquery引入 下载链接:jQuery官网 https://jquery.com/ 中文文档:jQuery AP中文文档 http://jquery.cuishifeng.cn/ < ...

  10. Python之路【第十五篇】开发FTP多线程程序

    要求: 1.用户加密认证 2.允许同时多用户登录 3.每个用户有自己的家目录,且只能访问自己的家目录 4.对用户进行磁盘配额,每个用户的可用空间不同 5.允许用户在ftp server上随意切换目录 ...