2016-10-04 2 views
0

Я искал из Интернета о том, как написать собственную функцию Decider в SCons, о том, как/когда исходный файл должен быть восстановлен, как это:Требует ли пользовательская функция дешифратора, чтобы быть членом класса?

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 он запрашивает ошибку питона:

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

самость питон ключевое слово, чтобы упомянуть функцию-член класса. Здесь, в файле SContruct, есть класс, но только функция solve_if_changed. Вопрос:

Do I have to add a class here? Why it prompts python error saying 'self' is not defined?

This example script a function call of specific_part_of_file_has_changed, is it a scons's own file that can be called by any pythong statement?

ответ

1

Название self не определен, потому что есть опечатка в документации. Вторая линия решающему следует читать:

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

Реализация specific_part_of_file_has_changed() метода (или любой аналогичный ряд шагов, чтобы определить, изменился ли файл) полностью зависит от вас ... «клиент». В конце концов, вам нужен «пользовательский решающий», верно? ;)

Смежные вопросы