博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
__str__
阅读量:5256 次
发布时间:2019-06-14

本文共 1969 字,大约阅读时间需要 6 分钟。

__str__是被print函数调用的,一般都是return一个什么东西。这个东西应该是以字符串的形式表现的。如果不是要用str()函数转换。当你打印一个类的时候,那么print首先调用的就是类里面的定义的__str__

1 class Person(object): 2     def __init__(self, name, job = None, pay = 0): 3         self.name = name 4         self.job = job 5         self.pay = pay 6  7     def lastName(self): 8         return self.name.split()[-1] 9 10     def giveRaise(self, percent):11         self.pay = int(self.pay * (1 + percent))12 13     def __str__(self):14         return "[Person: %s, %s]" % (self.name, self.pay)15 16 17 class Manager(Person):18     def giveRaise(self, percent, bonus = 0.10):19         Person.giveRaise(self, percent + bonus)20 21 22 if __name__ == '__main__':23     bob = Person('Bob Smith')24     sue = Person('Sue Jones', job = 'dev', pay = 100000)25     tom = Manager('Tom Jones', 'mgr', 50000)26 27     for object in (bob, sue, tom):28         object.giveRaise(0.10)29         print object

 

 在看几个简单的例子:

1 class strTest(object): 2     def __init__(self): 3         print "init: this is only test" 4  5     def __str__(self): 6         return "str: this is only test" 7  8 if __name__ == '__main__': 9     st = strTest()10     print st

运行结果:

init: this is only test
str: this is only test

可以看出,当打印 strTest 的一个实例 st 的时候, __str__ 函数被调用到了。

python 中的对象基本都默认有 __str__ 函数,供 print 函数调用。

 

再看例子,如果在函数 __str__ 里返回的不是字符串:

1 class strTest(object): 2     def __init__(self): 3         self.val = 1 4  5     def __str__(self): 6         return self.val 7  8 if __name__ == '__main__': 9     st = strTest()10     print st

运行结果:

>>>
Traceback (most recent call last):
  File "<模块1>", line 11, in <module>
TypeError: __str__ returned non-string (type int)

错误信息提示:__str__ 返回了一个非字符串。

 

修改上述例子:

1 class strTest(object): 2     def __init__(self): 3         self.val = 1 4  5     def __str__(self): 6         return str(self.val) 7  8 if __name__ == '__main__': 9     st = strTest()10     print st

运行结果:

>>>
1

用 str()将整型转换城字符串

 

 

 

 

 

转载于:https://www.cnblogs.com/Roger1227/p/3229040.html

你可能感兴趣的文章
11gR1 Patchset 2 ~ 11.1.1.3.0 (SOA) features ..
查看>>
Hdu 1708 Fibonacci String
查看>>
java lock锁住特定对象
查看>>
JAX-WS 访问SSL 的WebService 老是HTTP transport error: Connection refused错误的解决办法。...
查看>>
面向对象与函数式的对比
查看>>
yii2实战教程之第一个Yii程序
查看>>
php上传文件及头像预览
查看>>
程序猿加班的不归路!
查看>>
【译】在Transformer中加入相对位置信息
查看>>
大四java实习生的一些经历
查看>>
python programming
查看>>
基础排序算法之快速排序(Quick Sort)
查看>>
Truncate 删除数据
查看>>
线程池的概念
查看>>
USB打印机开钱箱
查看>>
mysql数据库 中文乱码
查看>>
Linux下Mysql数据库互为主从的配置过程
查看>>
ECSHOP系统,数据库表名称、结构
查看>>
Python Web开发框架Django
查看>>
【Install】我是如何安装Linux类系统的
查看>>