scons定制的决策功能是否需要成为班级成员?

时间:2016-10-04 15:23:48

标签: python class member scons self

我从互联网上搜索了如何在scons中编写我们自己的decider函数,以及如何/何时重建源文件,如下所示:

Program('hello.c')
def decide_if_changed(dependency,target,prev_ni):
 if self.get_timestamp()!=prev_ni.timestamp:
  dep=str(dependency)
  tgt=str(target)
  if specific_part_of_file_has_changed(dep,tgt):
   return true;
 return false;
Decider(decide_if_changed)

我有一个hello.c,没问题,但是在运行scons时会出现python错误:

$ scons -Q
scons: *** [o.o] NameError : global name 'self' is not defined

self是提及类成员函数的python关键字。在SContruct文件中,有一个类,但只有一个decision_if_changed函数。问题:

  

我必须在这里添加课程吗?为什么它会提示python错误说'self'没有定义?

     

这个示例脚本是一个函数调用specific_part_of_file_has_changed,它是一个scons自己的文件,可以被任何pythong语句调用吗?

1 个答案:

答案 0 :(得分:2)

未定义名称self,因为文档中存在拼写错误。决策者的第二行应为:

if dependency.get_timestamp()!=prev_ni.timestamp:

实施specific_part_of_file_has_changed()方法(或任何类似的一系列步骤以确定文件是否已更改)完全取决于您......“客户”。毕竟你想要一个“自定义决策者”,对吧? ;)