zoukankan      html  css  js  c++  java
  • 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}'
  • 相关阅读:
    Nginx负载均衡
    MySQL主从复制
    笔记
    tomcat工作原理
    Nginx工作原理
    Loj#6183. 看无可看
    [BZOJ 2759] 一个动态树好题
    5255 -- 【FJOI2016】神秘数
    [NOI2015]寿司晚宴
    [CQOI2017]老C的键盘
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/11210866.html
Copyright © 2011-2022 走看看