python 使用建议与技巧分享(四)
这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。
1如何打印更易读的类
不推荐方式
classPoint(object): def__init__(self,x,y): self.x=x self.y=y p=Point(3,4) printp #<__main__.Pointobjectat0x0000000001E1B9E8>
推荐方式
classPoint(object): def__init__(self,x,y): self.x=x self.y=y def__repr__(self): return'Point({self.x},{self.y})'.format(self=self) p=Point(3,4) printp #Point(3,4)
前一种方式打印的类不易读,不能获取更多的信息。通过类的__repr__方法可以将类打印得更易读。或者不定义__repr__方法,直接使用下面方式打印:
printp.__dict__ #{'y':4,'x':3}
使用__dict__方法,将类以字典形式打印出来,也比较易读。
2如何将类打印成json字符串
importjson classUser(object): def__init__(self,name,id): self.name=name self.id=id u=User('user1',1) printjson.dumps(u.__dict__,indent=4) ''' { "name":"user1", "id":1 } '''
通过json模块的dumps方法,可以轻易将类打印成json字符串。
3如何排序类列表
classUser: def__init__(self,name,key): self.name=name self.key=key def__repr__(self): return'User({self.name},{self.key})'.format(self=self) user_list=[ User('user1',3), User('user2',2), User('user3',1), ] printsorted(user_list,key=lambdauser:user.key) #[User(user3,1),User(user2,2),User(user1,3)] printsorted(user_list,key=lambdauser:user.name) #[User(user1,3),User(user2,2),User(user3,1)]
这里排序的方法和字典排序类似,第一种是按user的key升序排序,第二种是按user的name升序排序。其实还支持名字相同,再按key进行排序,如下:
user_list=[ User('user1',3), User('user1',2), User('user1',1), ] printsorted(user_list,key=lambdauser:(user.name,user.key)) #[User(user1,1),User(user1,2),User(user1,3)]
以上就是python使用建议与技巧分享(四)的详细内容,更多关于python建议与技巧的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。