python魔法方法-属性转换和类的表示详解

首先我们来了解一下什么是Python中的魔法方法。在Python中,魔法方法是以双下划线__作为前缀和后缀的特殊方法。这些方法提供了类的构造、初始化、比较、算术运算等操作的特殊行为。其中就包括本次要讲解的属性转换和类的表示。

一、属性转换

在Python中,我们经常需要对一个对象进行类型转换,比如将字符串类型转换为整数类型、将列表转换为元组类型等。而Python中的魔法方法__XXX__提供了这种类型转换的自定义行为。对于属性转换,我们可以通过__str__和__repr__两个魔法方法来实现。

  1. __str__方法

__str__方法返回一个用于表示对象的字符串,可以使用print()方法来输出对象的字符串表示。比如一个实例化的类的输出形式就可以使用__str__方法来定义。

这里给出一个示例代码:

class MyClass:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"My name is {self.name} and I'm {self.age} years old."

my_instance = MyClass("Tom", 25)
print(my_instance)

运行结果:

My name is Tom and I'm 25 years old.
  1. __repr__方法

__repr__方法返回一个用于表示对象的字符串,它通常可以用于将一个对象转换成一个可以被Python解析器读取的字符串形式。比如在对一个对象进行调试的时候,就可以使用__repr__方法来显示对象的字符串形式。

这里给出一个示例代码:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

p = Point(1, 2)
print(repr(p))

q = eval(repr(p))
print(q.x, q.y)

运行结果:

Point(1, 2)
1 2

二、类的表示

在Python中,我们可以使用__str__和__repr__方法来定制一个对象在字符串中的表示形式。但是,如果要在类级别上对类进行表示,并定义类级别的“打印”形式,则需要使用__str__和__repr__方法的基础上,还需要使用__format__魔法方法。

  1. __str__方法

__str__方法的作用在前面我们已经讲过了,这里再提一句,它用于将一个对象表示成字符串形式。对于一个类,我们可以使用它来定义类的字符串形式。示例如下:

class MyClass:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"My name is {self.name} and I'm {self.age} years old."

    def __repr__(self):
        return f"MyClass(name={self.name}, age={self.age})"

    def __format__(self, format_spec):
        return f"My name is {self.name:{format_spec}} and I'm {self.age:{format_spec}} years old."

my_instance = MyClass("Tom", 25)
print(my_instance)
print(f"{my_instance:20}")
print(f"{my_instance.name:10}")

运行结果:

My name is Tom and I'm 25 years old.
My name is Tom                and I'm 25                years old.
Tom       
  1. __repr__方法

__repr__方法也是前面提到过的,它用于将一个对象表示成字符串形式,通常会尽可能的提供足够的信息,以便重建该对象。对于一个类,我们可以使用它来定义类的字符串形式。示例如下:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"({self.x}, {self.y})"

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

    def __format__(self, format_spec):
        return f"({self.x:{format_spec}}, {self.y:{format_spec}})"

p = Point(1, 2)
print(p)
print(repr(p))
print(format(p, ".1f"))

运行结果:

(1, 2)
Point(1, 2)
(1.0, 2.0)

以上就是Python魔法方法-属性转换和类的表示的详细攻略,希望可以帮助到您。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python魔法方法-属性转换和类的表示详解 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python3+Pycharm+PyQt5环境搭建步骤图文详解

    下面是Python3+Pycharm+PyQt5环境搭建步骤的完整攻略: 1. 安装Python3 首先,你需要在官网下载并安装Python3的最新版本。具体步骤如下: 访问Python官网:https://www.python.org/downloads/ 。 选择适合你操作系统的Python3版本下载,并按照提示进行安装。 2. 安装Pycharm 接下…

    python 2023年5月14日
    00
  • python基础之爬虫入门

    Python基础之爬虫入门 本文将介绍Python爬虫的基础知识,包括爬虫的基本原理、常用的爬虫库、爬虫的流程和示例说明。 爬虫的基本原理 爬虫是一种自动化程序,用于从互联网上获取数据。爬虫的基本原理是通过HTTP协议向目标网站发送请求,获取网站的HTML代码,然后解析HTML代码,提取需要的数据。 常用的爬虫库 Python中有很多优秀的爬虫库,包括: r…

    python 2023年5月14日
    00
  • python tarfile压缩包操作保姆级教程

    Python tarfile压缩包操作保姆级教程 在Python中,tarfile模块是一个用于创建和提取tar文件的库。tar文件是一种常见的打包文件格式,通常用于在UNIX系统上打包文件和目录。本文将详细介绍如何使用Python的tarfile模块创建、读取、提取和归档tar文件。 创建tar文件 要创建tar文件,我们首先需要导入tarfile模块。然…

    python 2023年6月3日
    00
  • Python读写unicode文件的方法

    下面是Python读写unicode文件的方法的完整攻略。 一、关于Unicode 在讲解Python读写unicode文件的方法之前,我们先来了解一下Unicode。 Unicode是一种字符集,是计算机内部存储字符的一种方式。Unicode为每个字符定义了一个唯一的整数,换句话说就是为每个字符提供了一个数字编号。这个编号通常是16位的,被称为Unicod…

    python 2023年5月20日
    00
  • Python实现栅栏密码的加密解密方法详解

    Python实现栅栏密码的加密解密方法详解 1. 什么是栅栏密码? 栅栏密码(Rail Fence Cipher)是一种简单的加密方法,它采用了置换加密的思想。它的基本原理是把明文按照一定规则排列,然后把排列后的明文转化为密文。栅栏密码的加密解密过程相对简单,因此被广泛使用。 在栅栏密码中,明文被安排在一个矩阵中,然后逐行读取该矩阵来获取密文。具体来说,假设…

    python 2023年6月3日
    00
  • Python二进制串转换为通用字符串的方法

    Python中将二进制串转换为通用字符串有以下两种方法: 1. 使用 Python 自带 codecs 模块中的解码功能 在 Python 中,我们可以使用内置的codecs模块将二进制串转换为通用字符串。其使用方法如下: import codecs binary_str = b’00110010 00110000 00110030 00110031′ un…

    python 2023年6月5日
    00
  • python实现可下载音乐的音乐播放器

    我们将分为以下几个部分来讲解如何使用Python实现可下载音乐的音乐播放器: 理解所需的工具 确定要使用的Python库 实现代码 测试播放器 添加可下载音乐功能 1. 理解所需的工具 在开始编写代码之前,了解所需的所有工具是很重要的。以下是编写本教程所需的工具列表: Python pip (Python包管理工具)。 需要用到的Python库:pygame…

    python 2023年6月3日
    00
  • Python使用lambda抛出异常实现方法解析

    Python使用lambda抛出异常实现方法解析 简介 在Python中,我们可以使用lambda表达式(匿名函数)来定义一些简洁的函数,使得代码更加简单易读。使用lambda抛出异常可以帮助我们更加方便地在程序中处理异常。 使用方法 1. lambda表达式简介 lambda表达式是Python中的一种匿名函数,它不需要使用def关键字来定义函数名。在la…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部