Python疑难问题笔记




格式化打印

平时调试的时候我们经常需要把dict,list等对象打印出来。但是print所打印出来的内容是未格式化的,导致很难辨认。

解决方案是使用pprint模块

import pprint#导入pprint模块
pp = pprint.PrettyPrinter(indent=4)#定义缩进为4个空格
pp.pprint(dict)#格式化打印对象

实例方法,类方法与静态方法

一些属性方法属于类本身,另一些则属于由类创建的对象。

实例方法:

第一个参数为self的方法是实例方法。调用时Python将对象传递给方法。

特征:

  • 第一个参数为self

通过

实例.方法名()

类名.方法名(实例)

的形式调用

类方法:

类方法影响类整体,任何对于类方法的改动将影响由其创建的所有对象。

特征:

  • 具有@classmethod修饰器
  • 第一个参数为cls

这样定义的类方法可以通过

类名.方法名()

的形式调用,也可以通过

实例.方法名()

的形式调用,不能通过

类名.方法名(实例)

的形式调用;

静态方法

特征:

  • 具有@staticmethod修饰器

静态方法即为普通函数,但是必须通过

实例.方法名()

类名.方法名()

的形式调用

Reference:

Python-Unbound/Bound method object – 简书

Introducing Python by Bill Lubanovic


UnicodeEncodeError: ‘ascii’ codec can’t encode

这个异常是由于Unicode编码与ASCII编码的不兼容引起。

使用

import sys
print sys.getdefaultencoding()
'ascii'

获得Python的默认环境编码为ascii
由于Python调用ascii编码解码程序去处理字符流,如字符流不属于ascii范围内,则抛出上述异常。

解决方案为修改默认的编码模式为utf8:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

…待续…




Posted

in

by

Comments

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.