默认实现

如果我们没有实现两个方法的任何一个,会打印出什么呢?

import logging

logging.basicConfig(level=logging.INFO,

format='%(asctime)s - [line:%(lineno)d] - %(levelname)s: %(message)s')

class TechlogTest:

# def __str__(self):

# return "TechlogTest.__str__"

#

# def __repr__(self):

# return "TechlogTest.__repr__"

pass

if __name__ == '__main__':

testobj = TechlogTest()

print('%%r: %r; %%s: %s' % (testobj, testobj))

logging.info(testobj)

print(testobj)

print([testobj])

打印出了:%r: <__main__.techlogtest>; %s: <__main__.techlogtest>

[<__main__.techlogtest>]

我们看到,默认的实现方式通常不是我们想要的,他仅仅展示了对象在内存中的逻辑地址

只实现 __str__

import logging

logging.basicConfig(level=logging.INFO,

format='%(asctime)s - [line:%(lineno)d] - %(levelname)s: %(message)s')

class TechlogTest:

def __str__(self):

return "TechlogTest.__str__"

# def __repr__(self):

# return "TechlogTest.__repr__"

pass

if __name__ == '__main__':

testobj = TechlogTest()

print('%%r: %r; %%s: %s' % (testobj, testobj))

logging.info(testobj)

print(testobj)

print([testobj])

输出了:%r: <__main__.techlogtest>; %s: TechlogTest.__str__

2019-04-07 21:01:30,321 - [line:20] - INFO: TechlogTest.__str__

TechlogTest.__str__

[<__main__.techlogtest>]

我们看到,原本需要调用 __repr__ 变成了系统的默认实现

只实现 __repr__

import logging

logging.basicConfig(level=logging.INFO,

format='%(asctime)s - [line:%(lineno)d] - %(levelname)s: %(message)s')

class TechlogTest:

# def __str__(self):

# return "TechlogTest.__str__"

def __repr__(self):

return "TechlogTest.__repr__"

pass

if __name__ == '__main__':

testobj = TechlogTest()

print('%%r: %r; %%s: %s' % (testobj, testobj))

logging.info(testobj)

print(testobj)

print([testobj])

打印出了:%r: TechlogTest.__repr__; %s: TechlogTest.__repr__

2019-04-07 21:02:37,489 - [line:20] - INFO: TechlogTest.__repr__

TechlogTest.__repr__

[TechlogTest.__repr__]

所有需要调用 __str__ 的地方都改为调用了我们实现的 __repr__

python魔术方法str_python 魔术方法(三)对象的打印 -- __repr__ 与 __str__相关推荐

  1. Python入门基础(6)--面向对象/类和对象/魔术方法

    面向对象基本概述 面向对象(Object Oriented Programming,OOP)编程:扩展性更强.可读性更好.面向对象的编程将数据和操作数据封装到对象中,组织代码和数据的方式更接近人的思维 ...

  2. 详细介绍Python中的“魔术方法“__XXX___; 概述__str__()方法;__new__()方法; 三. __ new__ 和__init__的区别

    概述 一.__str__方法 当不用__str__()时: 发现输出结果只有对象一串id地址信息; 当我们想打印出更多信息时,用__str__()方法; 二.new()方法 三. __ new__ 和 ...

  3. Python最会变魔术的魔术方法,我觉得是它

    在上篇文章中,我有一个核心的发现:Python 内置类型的特殊方法(含魔术方法与其它方法)由 C 语言独立实现,在 Python 层面不存在调用关系. 但是,文中也提到了一个例外:一个非常神秘的魔术方 ...

  4. Python学习笔记1:数据模型和特殊方法(魔术方法)

    首先不要脸的放上个人网站:www.comingnext.cn 1.关于数据模型 在Python的官方文档中是这样说的: 对象是Python对数据的抽象.Python程序中所有数据都由对象或对象之间的关 ...

  5. Python世界里的魔术方法(一)

    序言 传说中,Python对象天生具有一些神奇的方法,它们具有一些魔力,因此它们总被双下划线所包围着.这些方法统称为魔术方法.在特定的操作下,这些魔术方法会被自动调用,并且表现出许多神奇的现象. 它们 ...

  6. Python的面向对象,魔术方法、类的三大特征、自省、实例空间、经典类与新式类

    目录 1.什么是面向对象 1.1 面向过程 1.2 面向对象 1.3 面向对象的优点 2.类 2.1 什么是类.对象,方法和属性 2.2 类的定义和使用 2.2.1 类名规范和类的写法 2.3 魔术方 ...

  7. python次方运算_neg__python 魔术方法1 运算符重载

    python中存在一些特殊的方法,这些方法通常采用格式:__method__().这些方法会在特定的情况下自动调用.例如:__new__().__init__().__del__() 等生命周期方法. ...

  8. php对象魔术方法,php学习之类与对象的魔术方法的使用

    原标题:php学习之类与对象的魔术方法的使用 魔术方法有哪些 __construct:构造方法 __destuct:析构方法 __call:在对象中调用一个不可访问的方法时.__call()会被调用 ...

  9. python基础之类的属性方法、魔术方法普通方法

    类的定义.调用方法.引用属性 类的属性和方法 类的属性 类属性的访问 类属性可以直接访问,无需实例化 类属性也可以通过实例来访问 实际上,所有的实例是共享类属性的 类属性的修改 修改了类属性后,对应的 ...

最新文章

  1. C语言实现Hanoi算法塔的功能(附完整源码)
  2. 《MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS》总结
  3. 整型数组 判断 java,给定一个整数数组,判断其中是否有3个数和为N
  4. python提取txt数据到excel_python 读取txt中每行数据,并且保存到excel中的实例
  5. 实木地板被机器人弄成坑_实木地板的常规保养
  6. mysql完成字符串分割
  7. php小程序支付notify,PHP 小程序支付
  8. vim编辑python_Python3基础知识——Vi/Vim编辑器的使用,大神们都在用的
  9. mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理
  10. 一个简单的txt读取与导出
  11. SPSS中介效应分析(Process和mediate插件)
  12. 机器学习:学习的分类
  13. Codechef:Walk on Tree/TREEWALK(Berlekamp-Massey算法)
  14. mysql多表查询数值为空null时处理成0
  15. 自己努力要学习啦(android的很多demo 总有你需要的)
  16. 统计学习方法——统计学习的分类
  17. 1. 工业大数据的内涵
  18. uefi启动解析:由原理到实例
  19. android如何在app端设置USB调试模式
  20. Hudi Compaction

热门文章

  1. Vue系列之搭建环境
  2. 如何使用 Python 实现微信消息防撤回
  3. tensorflow笔记2:TensorBoard
  4. 各执一词,民用安防市场现状看法PK
  5. 高性能队列 Disruptor
  6. Struts2环境搭建
  7. Java 学习之反射机制“解刨”分解类,并获取内容!
  8. WIN2008下找不到proxy的处理方法
  9. ASP.NET站点构建之减少不必要的请求
  10. python,无网、没网、生成环境迁移安装环境,支持virtualenv