python定制类__str__(实例详解)


本文摘自php中文网,作者乌拉乌拉~,侵删。

在以下的文章之中我们来了解一下什么是python中的定制类。了解一下什么是python定制类,以及python定制类在python编程之中能起到什么样的作用。

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。

__slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数。

除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类

定制类.png

__str__

我们先定义一个Student类,打印一个实例:

1

2

3

4

5

6

>>> class Student(object):

...     def __init__(self, name):

...         self.name = name

...

>>> print(Student('Michael'))

<__main__.Student object at 0x109afb190>

打印出一堆<__main__.Student object at 0x109afb190>,看起来相当不好看。

怎么才能打印得好看呢?只需要定义好__str__()方法,返回一个好看的字符串就可以了:

1

2

3

4

5

6

7

8

>>> class Student(object):

...     def __init__(self, name):

...         self.name = name

...     def __str__(self):

...         return 'Student object (name: %s)' % self.name

...

>>> print(Student('Michael'))

Student object (name: Michael)

这样打印出来的实例,不但好看,而且容易看出实例内部重要的数据。

但是细心的朋友会发现直接敲变量不用print,打印出来的实例还是不好看:

1

2

>>> s = Student('Michael')

>>> s<__main__.Student object at 0x109afb310>

这是因为直接显示变量调用的不是__str__(),而是__repr__(),两者的区别是__str__()返回用户看到的字符串,而__repr__()返回程序开发者看到的字符串,也就是说,__repr__()是为调试服务的。

解决办法是再定义一个__repr__()。但是通常__str__()和__repr__()代码都是一样的,所以,有个偷懒的写法:

1

2

3

4

5

6

class Student(object):

    def __init__(self, name):

        self.name = name

    def __str__(self):

        return 'Student object (name=%s)' % self.name

    __repr__ = __str__

以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了python定制类__str__的相关知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松。

更多相关知识,请访问php中文网Python教程栏目。

以上就是python定制类__str__(实例详解)的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中怎么去掉标点符号

Python生成不重复随机数和对list乱序的解决方法

Python实现有序字典方法示例

Python怎么把字符串变成数字

Python3中的range返回的是迭代器吗?

Python一般用什么软件

Python中while循环的使用方法

怎么利用Python输出星座

爬虫的解析方式一:josn解析

pycharm和Python区别

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...