classmethod(function)
根据function返回一个method类。
类方法接收类作为第一个参数,就像一个实例方法接收一个实例。
用@classmethod声明一个类方法。
@classmethod格式是一个方法装饰器——可以在【Function definitions】查看方法定义的详细介绍。
它可以用类或者实例去调用。它会忽略实例对象,只关注实例对应的类。如果一个类方法被派生类调用,派生类对象将作为隐含的第一个参数。
类方法不同于C++或者Java的静态方法,可以通过“satticmethod()”了解静态方法。
要了解更多关于类方法的信息,可以在【The standard type hierarchy】中查阅关于标准类型等级文档。
compile(source,filename,mode,flags=0,dont_inherit=False,optimize=-1)
把源文件编译成代码格式或者AST object。Code类可以被exec()和eval()执行。source可以是普通字符串,字节字符串,或者一个AST object。参考【ast】模块文档了解AST objects的工作原理。
filename参数应该给出文件格式,如果没有给出则应该给出一些可以认识的值。
mode参数明确了用哪种code来编译;如果source由一些列声明组成则是exec,如果由单一的表达式则是eval,如果由单个的相互作用的声明则是single(在最后的情况,表达式会跟另一个做比较然后打印None)。
可选参数flags和dont_inherit控制着影响source编辑的以后的声明。如果两个参数都不存在则代码将会与正在调用compile()中生效的那些未来语句一起编译。如果只给了flags参数,除了那些已经被使用的之外被flags明确的未来语句被使用。如果dont_inherit是一个非零整数flags参数也是非零整数——未来语句在调用时起作用编译时被忽略。
未来语句可以按位运算来指定多个语句的位指定。位字段需要明确给定一个特征,这个特征可以在__future__模块的_Feature实例作为compiler_flag来指定。
optimize明确了编译器的最佳化级别;默认值-1表示最优化级别被给了0个可选项。明确的级别有0(没有优化__debug__ is ture);1(移去了断言__debug__is flase);2(移除了文档注释)。
如果编译source无效会造成“语法错误”异常,如果包含空字节会造成“值错误”异常。
查看ast.parse()了解把Python 代码转换成AST表示形式。
Note:当编译一个有着多线代码用single或者eval mode时,必须用一个新的字符来种植输入。这可以帮助检测代码模块的完整和不完整语句。
生词:
implicit:含蓄的,暗示的,(默认的)
declare:声明,断言,宣称
consult:查阅,请教,商量
hierarchy:层级,等级制度
refer:参考
recognizable:可辨认的,可认识的
compile:编译
interactive:交互式的,相互作用的
latter:后面的,后者的
evaluate:评估,评价
inherit:继承
compilation:编辑
present:提出,介绍,呈现,赠送
bitwise:(n)按位,逐位
bitfield:位字段
optimize:优化,完善
explicit:明确的,直率的,显式的
assert:断言