Python __repr__()方法:显示属性

这篇具有很好参考价值的文章主要介绍了Python __repr__()方法:显示属性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python __repr__()方法:显示属性,python基础知识,python,开发语言

先看下面程序:

class Item:
    def __init__ (self, name, price):
        self.name = name
        self.price = price
# 创建一个Item对象,将之赋给im变量
im = Item('鼠标', 29.8)
# 打印im所引用的Item对象
print(im)

上面程序创建了一个 Item 对象,然后使用 print() 方法输出 Item 对象。编译、运行上面程序,将看到如下输出结果:

<__main__.Item object at 0x000001DB45D406D8>

当读者运行上面程序时,可能会看到不同的输出结果,at 后的 16 位十六进制数字可能发生改变。但这个输出结果是怎么来的呢?按道理来说,print() 函数只能在控制台打印字符串,而 Item 实例是内存中的一个对象,怎么能直接转换为字符串输出呢?

事实上,当使用该方法输出 Item 对象时,实际上输出的是 Item 对象的 __repr__() 方法的返回值。也就是说,下面两行代码的效果完全一样:

print (im)
print (im.__repr__)

__repr__() 是 Python 类中的一个特殊方法,由于 object 类己提供了该方法,而所有的 Python 类都是 object 类的子类,因此所有的 Python 对象都具有 __repr__() 方法。

因此,当程序需要将任何对象与字符串进行连接时,都可先调用 __repr__() 方法将对象转换成字符串,然后将两个字符串连接在一起。例如如下代码:

im str = im.__repr() + ""

__repr__() 是一个非常特殊的方法,它是一个“自我描述”的方法,该方法通常用于实现这样一个功能:当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用来告诉外界该对象具有的状态信息。

object 类提供的 __repr__() 方法总是返回该对象实现类的“类名+object at+内存地址”值,这个返回值并不能真正实现“自我描述”的功能,因此,如果用户需要自定义类能实现“自我描述”的功能,就必须重写 __repr__() 方法。例如下面程序:

class Apple:
    # 实现构造器
    def __init__(self, color, weight):
        self.color = color;
        self.weight = weight;
    # 重写__repr__方法,用于实现Apple对象的“自我描述”
    def __repr__(self):
        return "Apple[color=" + self.color +\
            ", weight=" + str(self.weight) + "]"
a = Apple("红色" , 5.68)
# 打印Apple对象
print(a)

编译、运行上面程序,可以看到如下运行结果:

Apple[color=红色, weight=5.68]

从上面的运行结果可以看出,通过重写 Apple 类的 __repr__() 方法,就可以让系统在打印 Apple 对象时打印出该对象的“自我描述”信息。

大部分时候,重写 __repr__() 方法总是返回该对象的所有令人感兴趣的信息所组成的字符串。通常可返回如下格式的字符串:文章来源地址https://www.toymoban.com/news/detail-822482.html

类名[field1 = 值1, field2 =值2, ...]

到了这里,关于Python __repr__()方法:显示属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python数据分析】Python基础知识篇

    🎉欢迎来到Python专栏~Python基础知识篇 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: Python学习专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ Python技能树:Python入门技能树。

    2024年02月16日
    浏览(54)
  • Python基础知识大全(适用于全面复习Python语法知识)

    python属于解释型语言 源代码(python)-解释器(逐行解释每一句源代码)-操作系统-cpu java属于编译型语言 源代码(java)-编译器-可执行文件-操作系统-cpu 容易混淆的几种表现形式 元组( ) 和列表[ ] 类似 只是元组不可以修改 这两个有点类似于C语言中的数组 集合 唯一{ } 和字典类似 只

    2024年02月02日
    浏览(48)
  • python基础知识

    python基础精讲 本专栏主要针对python基础语法,帮助学习者快速接触并掌握python大部分最重要的语法特征。 1、基本数据类型和变量 2、分支结构与循环结构 3、函数与异常处理 4、类与模块 5、文件读写 通过本专栏可以快速掌握python的基础语法。 1、enumerate()是python的内置函数;

    2024年01月19日
    浏览(54)
  • python基础知识二

    5.1认识组合数据类型 序列类型:列表、元组、字符串 — 支持双向索引 集合类型:集合 — 确定性、互异性、无序性;放入集合中的元素必须为不可变类型(数字类型,字符串,元组) 映射类型:字典 — 键值对的形式存在,键必须为不可变类型(数字类型,字符串,元组)

    2024年02月05日
    浏览(41)
  • python基础知识笔记

    参考视频和资料:2022新版黑马程序员python教程,8天python从入门到精通,学python看这套就够了_哔哩哔哩_bilibili 最后有知识的思维导图!  解释器:pycharm 一、Pycharm快捷键和基础 注释多行代码:Ctrl+/ 单行注释:# 搜索:ctrl + f 打开软件设置:ctrl+alt+s 复制当前行代码:ctrl + d

    2024年02月03日
    浏览(43)
  • Python基础知识入门(五)

    Python基础知识入门(一) Python基础知识入门(二) Python基础知识入门(三) Python基础知识入门(四)         模块是一个包含所有定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数、变量等功能来完成数据处理。 1.模块导入    

    2024年02月02日
    浏览(45)
  • Python基础知识入门(二)

    Python基础知识入门(一) Python基础知识入门(三) Python基础知识入门(四) Python基础知识入门(五)         Python 数字数据类型用于存储数值。数据类型是不允许改变,如改变数字数据类型的值,将重新分配内存空间。 1.数字函数 函数  描述  abs(x) 返回数字的绝对值。

    2024年02月22日
    浏览(45)
  • 【Python】Django 基础知识

    提示:阅读本章之前,请先阅读目录 默认端口:8000 如果想指定端口 浏览器,发起请求,请求路径:http://localhost:8000/index django,接受到浏览器请求,去读取urls.py文件 urls文件里面的urlpatterns,判断当前的index,是否包含,不包含则统一转404,如包含,则根据django自己封装的

    2024年02月09日
    浏览(58)
  • Python基础知识+WebAPI

    代码: Before reset_index: date 2016/7/7 22:00    7.00075 2016/7/7 23:00    7.99975 2016/7/8 00:00    8.99875 2016/7/8 01:00    9.99775 dtype: float64 After reset_index and rename columns:              date  data_value 0  2016/7/7 22:00     7.00075 1  2016/7/7 23:00     7.99975 2  2016/7/8 00:00     8.99875 3  2016/7/8 01:00    

    2024年04月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包