python进阶五(定制类)【5-1 python中__str__和__repr__】

python中 __str__和__repr__

如果要把一个类的实例变成 str,就需要实现特殊方法__str__():

1 class Person(object):
2     def __init__(self, name, gender):
3         self.name = name
4         self.gender = gender
5     def __str__(self):
6         return ‘(Person: %s, %s)‘ % (self.name, self.gender)

现在,在交互式命令行下用 print 试试:

1 >>> p = Person(‘Bob‘, ‘male‘)
2 >>> print p
3 (Person: Bob, male)

但是,如果直接敲变量 p:

>>> p
<main.Person object at 0x10c941890>

似乎__str__() 不会被调用。

因为 Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。

有一个偷懒的定义__repr__的方法:

1 class Person(object):
2     def __init__(self, name, gender):
3         self.name = name
4         self.gender = gender
5     def __str__(self):
6         return ‘(Person: %s, %s)‘ % (self.name, self.gender)
7     __repr__ = __str__

任务

请给Student 类定义__str__和__repr__方法,使得能打印出<Student: name, gender, score>:

1 class Student(Person):
2     def __init__(self, name, gender, score):
3         super(Student, self).__init__(name, gender)
4         self.score = score
 1 class Person(object):
 2
 3     def __init__(self, name, gender):
 4         self.name = name
 5         self.gender = gender
 6
 7 class Student(Person):
 8
 9     def __init__(self, name, gender, score):
10         super(Student, self).__init__(name, gender)
11         self.score = score
12
13     def __str__(self):
14         return ‘(Student: %s, %s, %s)‘ %(self.name,self.gender,self.score)
15         __repr__ = __str__
16
17 s = Student(‘Bob‘, ‘male‘, 88)
18 print s

原文地址:https://www.cnblogs.com/ucasljq/p/11625383.html

时间: 2024-10-10 23:11:54

python进阶五(定制类)【5-1 python中__str__和__repr__】的相关文章

Python学习之定制类

本文和大家分享的主要是 python开发中定制类的相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. 1. python中什么是特殊方法 任何数据类型的实例都有一个特殊方法:  __str__() ·  用于 print 的  __str__ ·  用于 len 的  __len__ ·  用于 cmp 的  __cmp__ ·  特殊方法定义在 class 中 ·  不需要直接调用 · Python 的某些函数或操作符会调用对应的特殊方法 file:///C:\Users\wlc

二十五 定制类

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: >>> class Student(object): ... def __init__(self, name):

孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录

(完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库服务,今天主要尝试使用firebase_admin模块来连接firebase数据库. 获得成功. 一.简单总结下今天对firebase_admin模块对象的学习 (一)要通过firebase_admin模块连接到firebase数据库,那么必须要拥有一个从firebase网站上自己的数据库的[用户和权限]处设置的'连接私钥'等相关信息的一个json文件,并下载到项目文件夹中来. (二)

Python进阶【第一篇】:Python简介

Python简介 1.Python的由来 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 2.C 和 Python.Java.C#等语言的联系与区别 机器码是指计算机能识别的语言--0/1,编程语言==>字节码==>机器码 其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行 Python 和 C Python这门语言是由C开发而来. C语言是可以用来编写操作系统

python中__str__与__repr__

(1)背景 python中,对于类(自定义类)的实例对象的默认显示既没有太大用处,也不美观.比如: 1 class adder: 2 def __init__(self,value=0): 3 self.data=value #初始化数据 4 def __add__(self,other): 5 self.data+=other 6>>> x=adder()7>>>print(x) <__main__.adder. object at 0x.....> 8&

python中 __str__和__repr__

如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __str__(self): return '(Person: %s, %s)' % (self.name, self.gender) 现在,在交互式命令行下用 print 试试: 但是,如果直接敲变量 p: 似乎__str__(

Python中__str__和__repr__的区别

Python有一个内置的函数叫repr,它能把一个对象用字符串的形式表达出来以便辨认,这就是"字符串表示形式".repr就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式.如果没有实现__repr__,当我们再控制台里打印一个变量的实例时,得到的字符串可能会是<__main__.Object at 0x14af07dbe80>,这个表示的是打印的对象,以及对象的内存地址 现在让我们看看__str__和__repr__这两个方法有什么区别 首先定义一个类 cl

python进阶五(定制类)【5-2 python中__cmp__】

python中 __cmp__ 对 int.str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__(): 1 class Student(object): 2 def __init__(self, name, score): 3 self.name = name 4 self.score = score 5 def __str__(self): 6 retur

python进阶五(定制类)【5-3python中__len__】

python中 __len__ 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数. 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数. 例如,我们写一个 Students 类,把名字传进去: 1 class Students(object): 2 def __init__(self, *args): 3 self.names = args 4 def __len__(self): 5 return len(self.names