Python实用笔记 (26)面向对象高级编程——定制类

Posted 牛郎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实用笔记 (26)面向对象高级编程——定制类相关的知识,希望对你有一定的参考价值。

Python的class允许定义许多定制方法,可以让我们非常方便地生成特定的类。以下是集中常见的定制方法:

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

__str__()

>>> 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,打印出来的实例还是不好看:

>>> s = Student(‘Michael‘)
>>> s
<__main__.Student object at 0x109afb310>

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

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

class Student(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return ‘Student object (name=%s)‘ % self.name
    __repr__ = __str__

 

以上是关于Python实用笔记 (26)面向对象高级编程——定制类的主要内容,如果未能解决你的问题,请参考以下文章

Python实用笔记 (23)面向对象高级编程——使用@property

Python实用笔记 (22)面向对象编程——实例属性和类属性

Python学习笔记八 面向对象高级编程

Python学习笔记八 面向对象高级编程元类

Python面向对象编程高级特性

Python自动化开发课堂笔记Day08 - Python进阶(面向对象的高级用法,网络编程)