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


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

                                          作者:尹正杰

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

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

      __str__:
        str()函数,format()函数,print()函数调用,需要返回对象的字符串表达式,即会默认调用该魔术方法。
        如果没有定义该方法,就去调用"__repr__"方法返回字符串表达式,如果"__repr__"没有定义,就直接返回对象的内存地址信息。
    
      __repr__:
        内建函数repr()对一个对象获取字符串表达。
        调用"__repr__"方法返回字符串表达,如果"__repr__"也没有定义,就直接返回object的定义就是显示内存地址信息。
    
      __bytes__:
        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 
    41 #以上代码执行结果如下:
    42 str:Jason Yin,18
    43 str:Jason Yin,18
    44 [repr:Jason Yin,18]
    45 ['str:Jason Yin,18']
    46 b'{"name": "Jason Yin", "age": 18}'
  • 相关阅读:
    基于 HTML5 + WebGL 实现的垃圾分类系统
    B/S 端基于 HTML5 + WebGL 的 VR 3D 机房数据中心可视化
    基于 Web 端 3D 地铁站可视化系统
    HTML5 + WebGL 实现的垃圾分类系统
    基于HTML5 WebGL的工业化3D电子围栏
    iOS 不支持 PWA,那又怎么样?
    PWA 入门: 写个非常简单的 PWA 页面
    iOS UTI
    canOpenURL: failed for URL: "weixin://app/wx 问题解决方式
    iOS扩大UIButton按钮的可点击区域
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/11210866.html
Copyright © 2020-2023  润新知